正则表达式 解决python2升python3的语法问题
2019.9.12 更新
今天偶然看到 python 官网中,还介绍了一个专门的工具,用于 python2 升级 python3,以后有机会使用下看看
背景
python2 升 python3,语法略有不同,例如
python2 :print "test" python3:print("test")
这时,项目中面临着大量的改动,考虑有正则解决问题
大概思路
1、匹配到所有格式如“print 任何字符”这样的语句
2、去掉 print 之后的空格,将空格之后的所有字符用括号括起来
实现方式:
print (.*) 可以匹配所有格式如“print 任何字符”这样的语句,并将空格之后的所有内容保留起来,替换时用 $1 来表示即可
print\($1\) 可以将空格之后的所有字符用括号括起来
原理
. 可以匹配除了换行(\n)之外的所有字符
* 表示 0 次或多次
() 括号括起来的内容会被保留起来,替换时用 $1 来表示即可
参考:
实例:
注意:
对于如下格式的语句,会引起错误
'''print "test1"
print "test2" '''
因为,经过正则替换之后,第2行会变成这样:print "test2" ''')
所以在用正则替换之后,可以全局搜索一下,有没有 ''') 或者 ''' )( ''' 与 ) 之间可能有多个空格,可以多敲几个确认下 ),有的话,把多余的 ) 去掉即可