字符串的 2to3 转换
2to3 conversion for strings
我为 Python 代码编写了一个基于 Qt 的小型文本编辑器,并将其嵌入到我的应用程序中。现在我要切换到 Python 3,我想帮助我的应用程序的用户转换他们的代码。我知道 2to3
可以完成文件的大部分转换。但是,我需要进行即时转换,而无需触及磁盘上的文件。我的意思是:
py3_code_str = convert2to3(py2_code_str)
有人知道如何用 2to3
或 lib2to3
实现吗?
这真的不是 2to3 的目的。
您应该以与 Python 2 和 3 兼容的方式编写代码。six 库可以提供帮助。
不幸的是,lib2to3
没有稳定的界面,这意味着它可能会发生巨大变化。
不过,如果您真的不关心它,也可以(稍作改动)使用 from lib2to3.refactor import RefactoringTool
并继续其 refactor_string
方法。
感谢 对我有用的东西:
from lib2to3.refactor import RefactoringTool, get_fixers_from_package
refactoring_tool = RefactoringTool(fixer_names=get_fixers_from_package('lib2to3.fixes'))
node3 = refactoring_tool.refactor_string(text2, 'script')
text3 = str(node3)
我为 Python 代码编写了一个基于 Qt 的小型文本编辑器,并将其嵌入到我的应用程序中。现在我要切换到 Python 3,我想帮助我的应用程序的用户转换他们的代码。我知道 2to3
可以完成文件的大部分转换。但是,我需要进行即时转换,而无需触及磁盘上的文件。我的意思是:
py3_code_str = convert2to3(py2_code_str)
有人知道如何用 2to3
或 lib2to3
实现吗?
这真的不是 2to3 的目的。
您应该以与 Python 2 和 3 兼容的方式编写代码。six 库可以提供帮助。
不幸的是,lib2to3
没有稳定的界面,这意味着它可能会发生巨大变化。
不过,如果您真的不关心它,也可以(稍作改动)使用 from lib2to3.refactor import RefactoringTool
并继续其 refactor_string
方法。
感谢
from lib2to3.refactor import RefactoringTool, get_fixers_from_package
refactoring_tool = RefactoringTool(fixer_names=get_fixers_from_package('lib2to3.fixes'))
node3 = refactoring_tool.refactor_string(text2, 'script')
text3 = str(node3)