我在Python正则表达式的重音问题上遇到了问题,我正在尝试以下内容:
import re
ER = re.compile(r'\w', re.L)
print(ER.sub('.','Maçã'))
..çã
即使使用
re.compile
并将区域设置作为参数传递,重音符号仍然无法被识别。
有人遇到过这个问题吗?
谢谢!使用re.U
Unicode标志更为适合。
如果使用Python 2.x,您还需要将字符串指定为Unicode格式,即
print(ER.sub('.', u'Maçã'))
u'Maçã'
。 - Thomas Ku'Maçã'
吗? - SilentGhost来自 http://www.regular-expressions.info/python.html
默认情况下,Python的正则表达式引擎只将字母A到Z、数字0到9和下划线视为“单词字符”。指定标志re.L或re.LOCALE可使\w匹配所有当前区域设置中被视为字母的字符。或者,您可以指定re.U或re.UNICODE以将所有脚本的所有字母视为单词字符。该设置还会影响单词边界。
尝试使用re.UNICODE。
我明白问题所在了!我之前试图在shell中使用这段代码,所以需要按照以下方式使用:
import re ER = re.compile(r'\w', re.L) ER.sub('.', unicode('Maça','utf-8'))
非常感谢!!! :)