接受多种格式美国电话号码的Python代码?
我正在从文件中读取很多用户输入的电话号码。这些号码的输入方式各不相同,稍微有些不同:
5555555555 555-555-5555 555-555/5555 1555-555-5555 etc...
我该如何在Python中轻松处理这些电话号码,并把它们转换成统一的格式,比如:555-555-5555?
6 个回答
6
我不是美国人,但这个方法适用于俄罗斯的电话号码……也许对美国的电话号码也适用?
- 去掉所有不是数字的字符
- 检查剩下的数字数量是否正确
- 在合适的位置插入几个短横线
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