正则表达式 - 特殊字母字符? - Python的
答
你可以使用
\w+
与Unicode的标志。我假设你的名字没有数字或下划线的风险。
>>> re.findall('\w+', 'Márquez', re.U)
['Márquez']
也似乎问号后失踪P
:(?P<name>[a-zA-Z]+)
答
对于Python < 3,你可能希望启用区域:
import locale
locale.setlocale(locale.LC_ALL, '')
然后用re.LOCALE
选项会regexpes :
re.findall('\w+', 'Márquez', re.LOCALE)
虽然,大概Unicode是更好的路要走,但它需要的数据进行解码和编码它到你的本地编码。
这并不好看的Python 2010-03-09 19:46:21
@Jacek:为什么你非ASCII字符串不是Unicode? – SilentGhost 2010-03-09 19:48:30
在Python 2.x的STR型和“XXXX”文字只包含一个字节的字符串。这些字节可能是特定编码中的某些字符,但是没有编码信息,这些字符只是字节。 '马尔克斯' 是:(77,195,161,114,113,117,101,122)(8个字节),如果您的编码是 'UTF-8' 或(77,225,114,113,117,101,122 )(7字节)如果编码是ISO 8859-1。当在ISO 8859-7中解码时,相同的值将是“Mαrquez”。相同的字节,不同的字符。不知道编码,我们不能谈论Unicode字符。 – 2010-03-09 20:30:47