Python正则表达式中的UTF

Tei*_*ion 7 python regex

我知道Python 3修复了很多UTF问题,但我不能使用Python 3,我使用的是2.5.1

我正在尝试使用正则表达式文档,但文档中包含UTF连字符 - 而不是 - .Python无法与这些匹配,如果我将它们放在正则表达式中,它会抛出一个摇摆不定的东西.

我如何强制Python使用UTF字符串或以某种方式匹配像这样的字符?

谢谢你的帮助

Pat*_*ney 7

你必须转义有问题的字符( - )并将au放在字符串文字的前面,使其成为一个unicode字符串.

所以,例如,这个:

re.compile("–") 
Run Code Online (Sandbox Code Playgroud)

成为这个:

re.compile(u"\u2013")
Run Code Online (Sandbox Code Playgroud)


Pat*_*ney 4

经过快速测试并访问PEP 0264:定义 Python 源代码编码后,我发现您可能需要通过在第一行添加这样的注释来告诉 Python 整个文件是 UTF-8 编码的。

\n\n
# encoding: utf-8\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我在 Python 2.5.1 / OS X 10.5.6 上创建并运行的测试文件

\n\n
# encoding: utf-8\nimport re\nx = re.compile("\xe2\x80\x93") \nprint x.search("xxx\xe2\x80\x93x").start()\n
Run Code Online (Sandbox Code Playgroud)\n