接受多种格式美国电话号码的Python代码?

0 投票
6 回答
1550 浏览
提问于 2025-04-15 15:59

我正在从文件中读取很多用户输入的电话号码。这些号码的输入方式各不相同,稍微有些不同:

5555555555
555-555-5555
555-555/5555
1555-555-5555
etc...

我该如何在Python中轻松处理这些电话号码,并把它们转换成统一的格式,比如:555-555-5555?

6 个回答

6

我不是美国人,但这个方法适用于俄罗斯的电话号码……也许对美国的电话号码也适用?

  1. 去掉所有不是数字的字符
  2. 检查剩下的数字数量是否正确
  3. 在合适的位置插入几个短横线
9

《Dive into Python》这本书里有一部分是讲如何解析电话号码的。

你可以在这里找到相关内容:http://www.diveintopython.org/regular_expressions/phone_numbers.html

4

用正则表达式只提取数字。然后检查一下这些数字前面有没有加1(因为没有区号是以1开头的)。如果有,就把它去掉;如果没有,就按照你想要的格式整理这10个数字。

import re
pnumber = re.sub("[^0-9]", "", input_number)
if pnumber[0] == 1:
    pnumber = pnumber[1:] #strip 1st char if 1

#insert the dashes
if len(pnumber) == 10:
    pnumber = "%s-%s-%s" % (pnumber[:3],pnumber[3:6],pnumber[6:])
else:
    #throw error

撰写回答