代码之家  ›  专栏  ›  技术社区  ›  Reveclair

如何使用Python将电话号码列表(例如202.202.2020)格式化为(202)202-2020?

  •  -1
  • Reveclair  · 技术社区  · 14 年前

    我有一个庞大的电话号码列表,格式主要是202.202.2020,但有时是2022022020,有时是202202 2020等。(但它们总是10个号码)。
    我想将它们全部格式化为 (202)202-2020 使用python脚本。

    非常感谢你的帮助。

    2 回复  |  直到 11 年前
        1
  •  3
  •   GodMan    14 年前

    删除垃圾邮件(.或-etc),只留下数字。

    number = ''.join([ n for n in number if n.isdigit() ])
    

    然后输入您想要的格式。

    number = '(' + number[:3] + ') ' + number[3:6] + '-' + number[6:10]
    
        2
  •  3
  •   mkayala    14 年前

    可以很容易地使用正则表达式: http://docs.python.org/library/re.html

    例如,这适用于您描述的情况:

    import re
    regexp = re.compile('([0-9]{3}).*([0-9]{3}).*([0-9]{4})')
    
    test = '222.222.2222'
    match = regexp.match(test)
    '(%s) %s-%s' % match.groups() # Gives '(222) 222-2222'
    
    test = '222 222 2222'
    match = regexp.match(test)
    '(%s) %s-%s' % match.groups() # Gives '(222) 222-2222'