【发布时间】:2018-02-14 03:41:38
【问题描述】:
我需要将电话号码转换为国际格式。我有一个电话号码示例列表
rows = [
(datetime.time(20, 35, 30), '0707262078',),
(datetime.time(20, 38, 18), '+46706332602',),
(datetime.time(20, 56, 35), '065017063'),
(datetime.time(21, 45, 1), '+46730522807',),
(datetime.time(22, 13, 47), '0046733165812')
]
我需要将所有以 ex 07 开头的数字替换为 +467,将所有 06 替换为 +466,将 00 替换为 +。对于上面的示例,我需要将号码转为 0707262078 到 +46707262078、065017063 到 +4665017063 和 0046733165812 到 +46733165812。
不知道是否可以仅在正则表达式中执行此操作,或者我是否需要使用其他代码执行此操作。
一直在尝试将 re.sub 与 lamda 结合使用,我的想法是制作一个带有匹配替换的字典,如下所示:
repl_dict = {
'01': '+461',
'02': '+462',
'03': '+463',
'04': '+464',
'05': '+465',
'06': '+466',
'07': '+467',
'08': '+468',
'09': '+469',
'00': '+'
}
到目前为止我的尝试:
import re
rows = [
(datetime.time(20, 35, 30), '0707262078',),
(datetime.time(20, 38, 18), '+46706332602Ring via Mitel ',),
(datetime.time(20, 56, 35), '065017063'),
(datetime.time(21, 45, 1), '+46730522807Ring via Mitel ',),
(datetime.time(22, 13, 47), '0046733165812')
]
repl_dict = {
'01': '+461',
'02': '+462',
'03': '+463',
'04': '+464',
'05': '+465',
'06': '+466',
'07': '+467',
'08': '+468',
'09': '+469',
'00': '+'
}
for row in rows:
regex = re.compile(r'^\d{1}[0-9](\d*)'), re.S
DialedNumber = regex.sub(lambda match: repl_dict.get(match.group(0), row[1]), row[1], row[1])
【问题讨论】:
-
我可以注意到你的 for 循环没有正确缩进。先解决这个问题(可能只是复制和粘贴错误)。
标签: regex python-3.x