python中如何检测比较操作符,‘=='‘!=’'=''>='等,前后是否有空格,没有就添加空格

Python015

python中如何检测比较操作符,‘=='‘!=’'=''>='等,前后是否有空格,没有就添加空格,第1张

我有一个优化Python代码格式的脚本,自己写的,可以部分实现你说的这种功能。本意是为了提高pylint评分的。分享一下,希望能给你提供一些思路。方法比较琐碎,分两部分:

1,双目运算符

先处理双目的运算符。先将有空格的替换成无空格的,例如" == "替换成"=="。然后再将无空格的替换成有空格的。以此来避免部分有空格而部分没有空格,以及重复添加空格的情况。只有一个空格的情况,如"== ",由于我写代码的习惯,我没有考虑。你可以自己添加。

2,单目运算符。

使用正则匹配单目运算符,如re.find(r"[\S]\=[\S]")就是匹配单个=号的。并且只匹配旁边没有空格的"a=b"这个形式的,不匹配"a= b"。因为双目的==等已经处理过,所以==等前后一定有空格,因此不会匹配到了。这样就解决了单双目符号冲突的问题。

当然也可以使用1中相同的伎俩,在1之前就将" =","= "等替换成"="。

以下是我的代码的片段。仅供参考,请勿直接复制(因为是片段无法正常运行)。

def addSpace(s):

    return ' ' + s + ' '

……

        #简单替换一些双目符号

        for ch in ['!=', '>=', '<=', '==', '+=', 

                    '-=', '*=', '/=', '**', '>>', '<<']:

            lines[i] = lines[i].replace(addSpace(ch), ch)

            lines[i] = lines[i].replace(ch, addSpace(ch))

        #将单个符号两边加空格

        for d in ['\=', '\+', '\-', '\*', '\>',

                    '\,', '\<', '\^', '\&','\%' ]:#斜杠是为re语句加的

            with_singles = re.findall('[\S]' + d + '[\S]', lines[i])

            for j in with_singles:

                if len(j) != 3:continue

                if d == '\,':

                    lines[i] = lines[i].replace(j, j[0] + j[1] + ' ' + j[2])#逗号后加空格

                else:

                    lines[i] = lines[i].replace(j, j[0] + addSpace(j[1]) + j[2])

python常见的运算符

1.算数运算符

算术运算符用于执行加减乘除、取余等基本数学运算,其中为了方便输入用斜杠"/"表示除号。和其它编程语言中两个整数相除结果为整数不同,Python中两个整数相除结果为小数,如果需要获取整除结果则需要使用两个斜杠"//"。Python中用两个“*”号表示求幂,例如 2**3=8,3**2=9。

①+ 名称:加

可用于对数字,序列等数据操作 。对于数字进行求和;其他的是连接

②- 名称 :减 只是求差

③* 名称:乘法

可用于数字、序列等数据进行操作;数字是求积;其他类型进行连续性的操作

④/ 名称:除法 求商

⑤% 名称:取余 求两个数字除法运算的余数

⑥** 名称:幂求a的b次幂

⑦// 名称:地板除法求商取整

2.关系运算符

关系运算符用于比较两个操作数之间的大小关系,返回值为True或False。

① == 名称:等于 ② !=不等于③ > 大于④ < 小于⑤ <= 小于等于 ⑥ >= 大于等于

注意:1. 一个=表示赋值,两个==表示判断两个对象是否相等

2.关系运算符可以连用

3.逻辑运算符

逻辑运算符用于判断多个条件是否满足某一要求。与其他编程语言不同的是:Python中用 not 表示逻辑非,and 表示逻辑与, or 表示逻辑或。

① and 名称:逻辑与 只有当and两边的之都为 True时,结果为True,否则结果均为False

② or 名称:逻辑或只有当or两边的之都为False时,结果为False,否则结果均为True

③not 名称:逻辑非结果与原来的结果相反,总是。

注意:逻辑与和了逻辑或在进行求解期间 ,总是从左到右一次执行 ,如果在某一步可以确定结果,那么将不在执行后面的表达式。

4.赋值运算符

运算符 += -= *= /= %= **= //= &= |= ^= <<= >>=

名称 加赋值 减赋值 乘赋值 除赋值 取余赋值 幂赋值 地板除法赋值 位与赋值 位或赋值 位异或赋值 左移赋值 右移赋值

例子 a +=b a -= b a *= b a /= b a %= b a **= b a //= b a &= b a |= b a ^= b a <<= b a >>= b

说明 a = a + b a = a - b a = a * b a = a / b a = a % b a = a ** b a = a // b a = a &b a =a | b a = a ^ b a = a <<b a = a >>b

5.身份运算符

in 例子:x in y 表示y中是否含有x,如果有则返回True,没有责则返回False

not in 例子: x not in y 表示y中是否含有,没有返回位True,有返回False