带重音符号的字符问题
我在使用Python的正则表达式时遇到了一个问题,具体情况是这样的:
import re
ER = re.compile(r'\w', re.L)
print(ER.sub('.','Maçã'))
..çã
即使我使用了re.compile
并把地区设置作为参数传入,系统还是无法识别带重音符的字母。有没有人遇到过这个问题呢?
谢谢!
3 个回答
0
我遇到问题了!我在命令行中尝试使用这段代码。所以,我需要这样使用:
import re
ER = re.compile(r'\w', re.L)
ER.sub('.', unicode('Maça','utf-8'))
非常感谢你们!!! :)
4
来自 http://www.regular-expressions.info/python.html
默认情况下,Python的正则表达式引擎只把字母A到Z、数字0到9和下划线当作“单词字符”。如果你想让 \w 匹配当前语言环境下所有被认为是字母的字符,可以使用标志 re.L 或 re.LOCALE。或者,你可以使用 re.U 或 re.UNICODE,这样就可以把所有语言的字母都当作单词字符。这个设置也会影响单词的边界。
试试使用 re.UNICODE。
4
你最好使用 re.U
这个unicode标志。
如果你在用Python 2.x版本,还需要把字符串指定为unicode,也就是:
print(ER.sub('.', u'Maçã'))