如何在Python中使用正则表达式搜索奇怪的非ASCII字符?
我正在使用以下的正则表达式,主要是为了查找并删除这些字符。
invalid_unicode = re.compile(ur'(Û|²|°|±|É|¹|Í)')
我的源代码是用ASCII编码的,每当我尝试运行这个脚本时,它就会报错:
语法错误:文件 ./release.py 第 273 行有非 ASCII 字符 '\xdb',但没有声明编码;详情请见 http://www.python.org/peps/pep-0263.html
如果我按照网站上的说明,在第二行加上 utf-8
的编码,我的脚本就无法运行了。相反,它给我这个错误:
语法错误:(unicode 错误)'utf8' 编解码器无法解码位置 0 的字节 0xdb:数据意外结束
我该如何在一个用 ASCII 编写的脚本中运行这个正则表达式呢?这将会很棒。
3 个回答
0
\x{c0de}
在正则表达式中,可以匹配代码点为 c0de
的Unicode字符。
Python使用的是PCRE,对吧?(如果不是的话,可能是 \uC0DE
这种形式...)
1
在告诉Python你的源文件是用UTF-8编码后,你有没有确认过你的编辑器是用UTF-8编码来保存这个文件的呢?你遇到的错误说明你的编辑器可能没有使用UTF-8编码。
你在用什么文本编辑器呢?
3
你需要弄清楚你的编辑器使用的是什么编码,然后按照PEP263的要求进行设置;或者,为了让代码更稳定和可移植(虽然可能会稍微难读一些),你可以在字符串中使用转义序列,也就是说,可以用 u'(\xdb|\xb2|\xb0|\xb1|\xc9|\xb9|\xcd)'
作为 re.compile
函数的参数。