我在列表中有以下电话号码:
+61 2 3456 2718
03 2756 2876
4567 8937
+61 5 6573 8593
05 8583 7932
我想删除第一个数字(如果为0),并在每个数字中加上+61。我该怎么办?
import re
for i in phone:
print(re.sub(r"(\+?\d{3})(\d{4})(\d+)", r"\1 \2 \3", i))
re.sub('^\d+', '', i)
答案 0 :(得分:1)
如果所有电话号码都以0
或某个国际代码(例如+61
(或其他国际代码)开头,而您不需要任何其他检查,则您的代码可以很简单(并且清晰可见)为:
fixed_phone_numbers = [f'+61{n[1:]}' if n[0] == '0' else n for n in phone_numbers]
如果出于某种原因,您想在Python 2中执行此操作:
fixed_phone_numbers = ['+61' + n[1:] if n[0] == '0' else n for n in phone_numbers]
答案 1 :(得分:0)
phone = ["+61 2 3456 2718",
"03 2756 2876",
"4567 8937 ",
"+61 5 6573 8593",
"05 8583 7932"]
import re
for i in phone:
if(not i.startswith('+61')):
if(re.match(r'^0', i)):
i = re.sub('^0', '+61', i)
else:
i = '+61 ' + i
print(i)
+61 2 3456 2718
+613 2756 2876
+61 4567 8937
+61 5 6573 8593
+615 8583 7932
答案 2 :(得分:0)
您可以检查第一个字符。如果它是'0',则用“ +61” +“ substring_of_phone_number_from_position_1”(i [1:])替换字符串。
import re
for i in phone:
if i[0]=='0':
i='+61'+i[1:]
elif i[0]!='+':
i='+61'+i
答案 3 :(得分:0)
希望它会有所帮助:-)。我只用了正则表达式
In [1]: strings = """+61 2 3456 2718
...: 03 2756 2876
...: 4567 8937
...: +61 5 6573 8593
...: 05 8583 7932"""
In [3]: import re
In [12]: for phoneno in strings.split('\n'):
...: print(re.sub(r'^(0|\+61|)',r'+61',phoneno))
...:
...:
+61 2 3456 2718
+613 2756 2876
+614567 8937
+61 5 6573 8593
+615 8583 7932