在 Python 2 和 Python 3 中有效的原始 unicode 文字?
Raw unicode literal that is valid in Python 2 and Python 3?
显然 ur""
语法在 Python 3 中已被禁用。但是,我需要它! "Why?",你可能会问。嗯,我需要 u
前缀,因为它是一个 unicode 字符串,我的代码需要在 Python 上工作 2. 至于 r
前缀,也许它不是必需的,但标记格式我正在使用需要很多反斜杠,这将有助于避免错误。
这是一个在 Python 2 中执行我想要的操作但在 Python 3 中是非法的示例:
tamil_letter_ma = u"\u0bae"
marked_text = ur"\a%s\bthe Tamil\cletter\dMa\e" % tamil_letter_ma
遇到这个问题后,我找到了 http://bugs.python.org/issue15096 并注意到了这句话:
It's easy to overcome the limitation.
有没有人愿意提供一些想法?
相关:What exactly do "u" and "r" string flags do in Python, and what are raw string literals?
Unicode 字符串是 Python 3.x 中的默认字符串,因此单独使用 r
将产生与 Python 中的 ur
相同的结果 2.
为什么不直接使用原始字符串文字 (r'....'
),你不需要指定 u
因为在 Python 3 中,字符串是 unicode 字符串。
>>> tamil_letter_ma = "\u0bae"
>>> marked_text = r"\a%s\bthe Tamil\cletter\dMa\e" % tamil_letter_ma
>>> marked_text
'\aம\bthe Tamil\cletter\dMa\e'
为了使其在Python 2.x中也能工作,请在源代码的最开头添加the following Future import statement,以便源代码中的所有字符串文字都变成unicode。
from __future__ import unicode_literals
首选方法是删除 u''
前缀并使用 from __future__ import unicode_literals
作为 。但是在您的特定情况下,您可能会滥用 "ascii-only string" % unicode
returns Unicode:
>>> tamil_letter_ma = u"\u0bae"
>>> marked_text = r"\a%s\bthe Tamil\cletter\dMa\e" % tamil_letter_ma
>>> marked_text
u'\a\u0bae\bthe Tamil\cletter\dMa\e'
显然 ur""
语法在 Python 3 中已被禁用。但是,我需要它! "Why?",你可能会问。嗯,我需要 u
前缀,因为它是一个 unicode 字符串,我的代码需要在 Python 上工作 2. 至于 r
前缀,也许它不是必需的,但标记格式我正在使用需要很多反斜杠,这将有助于避免错误。
这是一个在 Python 2 中执行我想要的操作但在 Python 3 中是非法的示例:
tamil_letter_ma = u"\u0bae"
marked_text = ur"\a%s\bthe Tamil\cletter\dMa\e" % tamil_letter_ma
遇到这个问题后,我找到了 http://bugs.python.org/issue15096 并注意到了这句话:
It's easy to overcome the limitation.
有没有人愿意提供一些想法?
相关:What exactly do "u" and "r" string flags do in Python, and what are raw string literals?
Unicode 字符串是 Python 3.x 中的默认字符串,因此单独使用 r
将产生与 Python 中的 ur
相同的结果 2.
为什么不直接使用原始字符串文字 (r'....'
),你不需要指定 u
因为在 Python 3 中,字符串是 unicode 字符串。
>>> tamil_letter_ma = "\u0bae"
>>> marked_text = r"\a%s\bthe Tamil\cletter\dMa\e" % tamil_letter_ma
>>> marked_text
'\aம\bthe Tamil\cletter\dMa\e'
为了使其在Python 2.x中也能工作,请在源代码的最开头添加the following Future import statement,以便源代码中的所有字符串文字都变成unicode。
from __future__ import unicode_literals
首选方法是删除 u''
前缀并使用 from __future__ import unicode_literals
作为 "ascii-only string" % unicode
returns Unicode:
>>> tamil_letter_ma = u"\u0bae"
>>> marked_text = r"\a%s\bthe Tamil\cletter\dMa\e" % tamil_letter_ma
>>> marked_text
u'\a\u0bae\bthe Tamil\cletter\dMa\e'