正则表达式 解决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" ''')

所以在用正则替换之后,可以全局搜索一下,有没有 ''') 或者 ''' )(    ''' 与 ) 之间可能有多个空格,可以多敲几个确认下    ),有的话,把多余的 ) 去掉即可

 

 
posted @ 2019-07-15 13:16  stoneBlog  阅读(657)  评论(0编辑  收藏  举报