我如何在Python中正则表达式搜索奇怪的非ASCII字符?

时间:2010-01-11 02:48:04

标签: python regex unicode ascii

我正在使用以下正则表达式来搜索和删除这些字符。

invalid_unicode = re.compile(ur'(Û|²|°|±|É|¹|Í)')

我在ASCII编码的源代码,每当我尝试运行脚本时它会吐出来:

  

SyntaxError:第273行文件./release.py中的非ASCII字符'\ xdb',但未声明编码;有关详细信息,请参阅http://www.python.org/peps/pep-0263.html

如果我按照指定网站上的说明操作,并将utf-8放在第二行编码上,则我的脚本不会运行。相反,它给了我这个错误:

  

语法错误:( unicode错误)'utf8'编解码器无法解码位置0的字节0xdb:意外的数据结束

如何在ASCII编写的脚本中运行这个正常的表达式,这个脚本非常棒。

3 个答案:

答案 0 :(得分:3)

您需要找出编辑器正在使用的编码,并根据PEP263进行设置;或者,使事情更加稳定和便携(尽管可能性稍差)并在字符串文字中使用转义序列,即使用u'(\xdb|\xb2|\xb0|\xb1|\xc9|\xb9|\xcd)'作为re.compile调用的参数。

答案 1 :(得分:1)

在告诉Python您的源文件使用UTF-8编码后,您是否真的确保编辑器使用UTF-8编码保存文件?您收到的错误表明您的编辑器可能没有使用UTF-8。

您使用的是哪种文字编辑器?

答案 2 :(得分:0)

\x{c0de}

在正则表达式中,匹配代码点c0de处的Unicode字符。

Python使用PCRE,对吗? (如果没有,则可能是\uC0DE而不是......)