2010-03-09 123 views

回答

3

你可以使用

\w+ 

與Unicode的標誌。我假設你的名字沒有數字或下劃線的風險。

>>> re.findall('\w+', 'Márquez', re.U) 
['Márquez'] 

也似乎問號後失蹤P(?P<name>[a-zA-Z]+)

+0

這並不好看的Python <3.0 - 我不喜歡使用與普通(非Unicode)字符串的UNICODE選項的想法。 – 2010-03-09 19:46:21

+0

@Jacek:爲什麼你非ASCII字符串不是Unicode? – SilentGhost 2010-03-09 19:48:30

+0

在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

0

對於Python < 3,你可能希望啓用區域:

import locale 
locale.setlocale(locale.LC_ALL, '') 

然後用re.LOCALE選項會regexpes :

re.findall('\w+', 'Márquez', re.LOCALE) 

雖然,大概Unicode是更好的路要走,但它需要的數據進行解碼和編碼它到你的本地編碼。

相關問題