我可以覆盖 Python 2 中的 u 字符串(u'example')吗?

Can I override u-strings (u'example') in Python 2?

在调试升级到 Python 3 时,能够覆盖 u'' 字符串前缀以调用我自己的函数或替换为非 u 字符串会很有用。

我试过 unichr = chr 之类的东西,这对我的调试很有用,但没有完成上述任务。

module.uprefix = str 是我正在寻找的解决方案类型。

你基本上做不到;正如其他人在评论中指出的那样, u-prefix 处理得非常早,远早于 in-code 分配生效的任何事情。

你能做的最好的事情就是使用 ast.parse 读取磁盘上的模块(不导入它)并找到所有 u'' 字符串;它区分前缀。这将帮助您以 Python-aware 的方式找到它们,比仅搜索 u'u" 更可靠,但差异可能不会很大,特别是如果您使用单词边界进行搜索(正则表达式 \bu['"])。除非你的程序中有很多 u'u" 不是前缀?

>>> ast.dump(ast.parse('"abc"', mode='eval'))
"Expression(body=Constant(value='abc', kind=None))"
>>> ast.dump(ast.parse('u"abc"', mode='eval'))
"Expression(body=Constant(value='abc', kind='u'))"

根据评论,你想做什么?我已经将很多代码从 Python 2 迁移到 Python 3 并且从来不需要这个......可能有不同的方法来实现相同的目标?