如何将Python2中的全部:print“ string”替换为:print(“ string”),对于Python3?

时间:2018-12-24 21:45:59

标签: python regex

如标题所述,如何将Python2中的所有内容:print“ string”替换为:print(“ string”),对于Python3?

我真的真的希望他们使此功能向后兼容。官方推荐使用2to3.py脚本,但它似乎总是像我在Py2脚本示例中需要替换的打印语句,例如在笔记本或Jupyter实验室中运行(这使2to3.py更具吸引力-除非已实现)一个转换器!)

@ Bazingaa,@ WiktorStribiżew,@ jpp:不可重复,即不转发兼容性。即,我不是在问如何在Python2中使用Python3语法,这将是向前兼容,而相反是反向兼容性。

@jpp即使您添加了说明,我也对您的阅读理解水平感到震惊。我最初在下面的答案中包括了那些“可能重复的内容”,并解释了这种差异(添加标签和评论之前您也必须先阅读该差异),这些差异不会“给我我想要的东西”。赞赏“危险”的警告,但您再次错过了我要使用Python 3的全部要义。。试图在旧教程脚本中从Python 2更改语法 。不知道您怎么可能两次读错了。我下面的解决方案是有效的,这是我寻找了多年的解决方案,无疑会帮助住在这里的其他人。

2 个答案:

答案 0 :(得分:1)

他们确实使该功能向后兼容。从将来在文件开头导入它。

from __future__ import print_function

好吧,转发兼容。现在,您只需要在自己的ide中进行查找和替换即可。

答案 1 :(得分:1)

http://sqlalche.me/e/rvf5Connection Error (Azure Connection String)显示了Vim的解决方案,但该解决方案适用于Windows和打印变量语句。

在旧的Python2示例脚本中运行良好。否则,请使用2to3.py进行其他转换。

This上尝试一下(由于某些原因在NP ++中不起作用):

find:    (?<=print)( ')(.*)(')
replace: ('$2')

对于变量:

(?<=print)( )(.*)(\n)
('$2')\n

对于标签和变量:

(?<=print)( ')(.*)(',)(.*)(\n)
('$2',$4)\n
相关问题