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" ''')

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

 

正则表达式 解决python2升python3的语法问题的更多相关文章

  1. 用 Anaconda 完美解决 Python2 和 python3 共存问题

    Python3 被越来越多的开发者所接受,同时让人尴尬的是很多遗留的老系统依旧运行在 Python2 的环境中,因此有时你不得不同时在两个版本中进行开发,调试. 如何在系统中同时共存 Python2 ...

  2. 解决python2和python3的pip冲突

    最近突然出现了一种情况当电脑上同时安装python2和python3的时候会导致我的pip冲突 . 最终经过我的发现是因为其环境没有配置好 还有就是没有找到精准的包导致的 1.下载python2.7, ...

  3. 用启动器py成功解决python2和python3同时共存且同时运行的问题

    缘起:之前一直用PHP来开发微信公众号后台,最近正在学习python,而且看到微信官方也把公众号后台的示例代码换成了python的,但是示例中用的web.py需要用到python2,而我自己的电脑上装 ...

  4. 解决 Python2 和 Python3 的共存问题

    首先安装两种版本的Python 进入系统属性更改环境变量 将两个版本的安装路径找出. 添加至PATH中,变量之间用分号隔开. D:\Python36\Scripts\;D:\Python36\;D:\ ...

  5. Python2和Python3的一些语法区别

    Python2和Python3的一些语法区别 python 1.print 在版本2的使用方法是: print 'this is version 2 也可以是 print('this is versi ...

  6. python2 与 python3 语法区别

    python2 与 python3 语法区别 概述# 原稿地址:使用 2to3 将代码移植到 Python 3 几乎所有的Python 2程序都需要一些修改才能正常地运行在Python 3的环境下.为 ...

  7. six库 解决python2的项目如何能够完全迁移到python3

    six库 解决python2的项目如何能够完全迁移到python3 SIX是用于python2与python3兼容的库. 它存在的目的是为了拥有无需修改即可在Python 2和Python 3上同时工 ...

  8. 解决win10下python3和python2共存pip的问题

    经过在查阅网友的各种经验,发现仍然解决不了问题,python2和python3在win10下的安装就不再演示了,直接在python的官网下载就好,我机器上使用的是python2.7.15和python ...

  9. python2与python3语法区别之_重定向

    python2与python3两版本的区别是众所周知的,今天主要记录python下版本2 与版本3的区别 python2 In [7]: logfile = open('/tmp/mylog.log' ...

随机推荐

  1. NOIP_TG

    本博客主要记录一些在刷题的途中遇到的一些巧妙的题目 砝码称重 一开始想到可以DP递推标记能凑成的数量 但发现同一种砝码可能有多个于是想多开一维状态存当前还剩多少砝码 真是愚蠢至极 直接把所有砝码单独看 ...

  2. 如何更快理解和运用服务编排?(使用Goku API Gateway实现)

    上一篇博客 未来实现API管理系统的几个关键词 发布后,有不少读者私信我,让我写一篇实际运用的文章,我周末趁着有空写了这篇有关“服务编排”的文章.用的是Goku API Gateway进行演示, 希望 ...

  3. 网站开发常用Sql语句

    维护网站,经常操作数据库,使用sql语句可以达到事半功倍的效果.比如,把所有密码为空的教师初始设成id一致,sql语句比手动快万倍. 下面介绍数据库开发中经常用到的一些sql语句: 一 建库操作 1. ...

  4. 使用Spring 或Spring Boot实现读写分离( MySQL实现主从复制)

    http://blog.csdn.net/jack85986370/article/details/51559232 http://blog.csdn.net/neosmith/article/det ...

  5. Pathon中numpy模块

    目录 numpy模块 切割矩阵 矩阵元素替换 矩阵的合并 通过函数创建矩阵 fromstring/fromfunctions 矩阵的运算 常用矩阵运函数 矩阵的点乘 矩阵的逆 矩阵的其他操作 nump ...

  6. 百万年薪python之路 -- 并发编程之 多进程 一

    并发编程之 多进程 一. multiprocessing模块介绍 ​ python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大 ...

  7. Leetcode(10)正则表达式匹配

    Leetcode(10)正则表达式匹配 [题目表述]: 给定一个字符串 (s) 和一个字符模式 (p).实现支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符. '*' 匹配零个或 ...

  8. Spring Boot - 访问外部接口最全总结

    Spring Boot - 访问外部接口 在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求, 比如调用外部的地图API或者天气API. Spring ...

  9. MySQL操作(一)用户及权限

    一.mysql 里的所有用户都是存储在数据库mysql的user表里 二.创建普通用户.赋权.撤销权限 的操作 1.创建用户(需要先用root进去mysql)格式:create  user  '用户名 ...

  10. C#操作sql server

    C#操作sqlserver跟操作其他数据没有太大差别,但是又一些细节要注意一下. 在安装sqlserver时不要选择默认实例,如果是则需要更改设置,还有远程连接要去连接服务中设置一下,如端口1433等 ...