带重音符号的字符问题

5 投票
3 回答
2768 浏览
提问于 2025-04-16 10:31

我在使用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çã'))

撰写回答