如何在python中的电话号码列表中进行字符串替换?

时间:2019-05-15 03:18:42

标签: python regex python-3.x string replace

我在列表中有以下电话号码:

+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)

4 个答案:

答案 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