【发布时间】:2011-06-14 11:58:45
【问题描述】:
我在Python正则表达式的重读上有问题,我正在做以下尝试:
import re
ER = re.compile(r'\w', re.L)
print(ER.sub('.','Maçã'))
..çã
即使使用re.compile 将语言环境作为参数传递,重音符号也无法识别。
有人遇到过这个问题吗?
谢谢!
【问题讨论】:
-
也许懂巴西的人可以把这篇文章翻译成英文?
我在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çã'
u。
u'Maçã'吗?
来自http://www.regular-expressions.info/python.html
默认情况下,Python 的正则表达式引擎仅将字母 A 到 Z、数字 0 到 9 以及下划线视为“单词字符”。指定标志 re.L 或 re.LOCALE 以使 \w 匹配给定当前区域设置的所有被视为字母的字符。或者,您可以指定 re.U 或 re.UNICODE 将来自所有脚本的所有字母视为单词字符。该设置也会影响单词边界。
尝试使用 re.UNICODE。
【讨论】:
我有问题!我试图在 shell 中使用这段代码。所以,我需要这样使用:
重新导入 ER = re.compile(r'\w', re.L) ER.sub('.', unicode('Maça','utf-8'))
非常感谢!!! :)
【讨论】: