我正在解析OpenStreetMaps XML文件并将电话号码重新格式化为标准+1 123 456 7890.我已经为所有不良格式创建了正则表达式,并创建了一个清理它们的函数:
def fix_phone(phone_list):
bad_format = re.compile(r'(\W\d\s)(\W\d{3}\W\s)(\d{3}\W\d{4}$)')
for phone in phone_list:
if bad_format.search(phone):
phone = phone[0:2]+" "+phone[4:7]+" "+phone[9:12]+" "+phone[13:]
对于电话号码'+1 (720) 406-9696'
,此功能正在向我提供此结果:'+1 1 ( 0) 06-9696'
这是怎么回事?如果我将这三行代码键入一个新的jupyter单元格中:
phone = '+1 (720) 406-9696'
if re.compile(r'(\W\d\s)(\W\d{3}\W\s)(\d{3}\W\d{4}$)').search(phone):
print phone[0:2]+" "+phone[4:7]+" "+phone[9:12]+" "+phone[13:]
我得到了所需的结果'+1 720 406 9696'
。我错过了什么?