2011-03-30 110 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