2011-03-30 107 views
2

有麻煩匹配與正則表達式的unicode字符在python蟒蛇重新匹配Unicode字符

# -*- coding: utf8 -*- 

import re 

locations = [ 
    "15°47'S 47°55'W", 
    "21º 18' N, 157º 51' W", 
    "32°46′58″N 96°48′14″W", 
] 

rx = re.compile(ur""" 
    ^\d+[°º] 
    | 
    ^\d+[\xb0\xba] 
    """, re.X) 

for loc in locations: 
    if not rx.match(loc): 
     print loc 

結果:

15°47'S 47°55'W 
21º 18' N, 157º 51' W 
32°46′58″N 96°48′14″W 

似乎無法匹配的unicode字符!

回答

5

因爲locations不是unicode字符串。

locations = [ 
    u"15°47'S 47°55'W", 
    u"21º 18' N, 157º 51' W", 
    u"32°46′58″N 96°48′14″W", 
] 
+0

沒關係,Python會自動轉換。 – phihag 2011-03-30 22:05:24

+1

@pyhag:'print re.match(u「°」,「°」)'在Python 2.7中爲None。 – kennytm 2011-03-30 22:09:37

+0

哦,你是完全正確的。這種「自動轉換」僅適用於雙方都是ASCII的子集。 – phihag 2011-03-30 22:14:28