如何在 Python2 中将所有:print "string" 替换为: print("string"),对于 Python3? [复制]

Posted

技术标签:

【中文标题】如何在 Python2 中将所有:print "string" 替换为: print("string"),对于 Python3? [复制]【英文标题】:How to replace all: print "string", in Python2 with: print("string"), for Python3? [duplicate] 【发布时间】:2019-05-23 21:08:08 【问题描述】:

正如标题所说,如何将所有:print "string",在 Python2 中替换为:print("string"),对于 Python3?

真的希望他们使这一功能向后兼容。官方建议使用 2to3.py 脚本,但它似乎总是我需要在 Py2 脚本示例中替换的打印语句,比如在笔记本或 Jupyter 实验室中运行(这使得 2to3.py 不那么吸引人 - 除非他们实施转换器!)

.

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

@jpp 我对您的阅读理解水平感到震惊,即使在添加了说明之后也是如此。我最初在下面的答案中包含了那些“可能的重复项”,并解释了差异(在添加标签和评论之前您一定也没有阅读过),这并没有“给我我正在寻找的东西”。感谢“危险”的谨慎,但您再次错过了重点,我正在使用 Python 3..试图在旧教程脚本中更改 Python 2 的语法 .不知道你怎么会读错两次。我下面的解决方案是有效的,我已经寻找了多年,并且无疑会帮助到这里的其他人。

【问题讨论】:

不重复,即不向前兼容。 添加了一些重复项,为您提供所需的正则表达式。此外,正式的 Python 2 很快将不再受支持。使用 Python 2 后果自负。 不要使用正则表达式,而是从 cli 运行 2to3(按照它的帮助) 【参考方案1】:

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

from __future__ import print_function

嗯,向前兼容。现在,您只需在 ide 中进行查找和替换。

【讨论】:

给我'无效语法'打印'-- 15分' 你的具体语法是什么? "print x" 是 python 2 语法。 “print(x)”是python 3。问题是确保你将3上下文用于2。所以导入未来,将打印语句切换到新版本。 SyntaxError:调用“打印”时缺少括号。你是说 print('test') 吗?【参考方案2】:

This 和 this 显示了 Vim 的解决方案,但这个适用于 Windows 并打印变量语句。

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

在regexr.com 上试用(由于某种原因在 NP++ 中不起作用):

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

对于变量:

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

对于标签和变量:

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

【讨论】:

如果打印语句已经使用单引号,则不起作用:/ mkay..,然后替换双引号.. ??

以上是关于如何在 Python2 中将所有:print "string" 替换为: print("string"),对于 Python3? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

python2 与 python3的区别

原创关于python3和python2中print的理解

python2.7如何让print“不换行”

python2 与 python3的区别

python2 与 python3的区别

在 PyCharm 中将 python 2 代码转换为 3