将电话号码拆分为数字列表:Python

时间:2018-08-02 17:44:40

标签: python regex string split

我目前正在尝试将一个应该是电话号码的字符串拆分成仅包含单个数字的列表。我这样做是为了对用户输入信息的字段进行错误校验。

例如:

如果用户输入: 123 456-7890

我要输出列表:[1,2,3,4,5,6,7,8,9,0]

我当前正在跑步:

numbersList = [int(s) for s in str.split(unformattedPhone) if s.isdigit()]

但是,通过将920视为一个单独的数字,这总是会挂断电话,并且也不用连字符分隔。我认为有办法使用正则表达式来做到这一点,但我对此并不满意。任何建议表示赞赏,谢谢。

3 个答案:

答案 0 :(得分:2)

遍历字符串。

例如:

unformattedPhone = "123 456-7890"
numbersList = [int(s) for s in unformattedPhone if s.isdigit()]
print(numbersList)

输出”

[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

答案 1 :(得分:1)

您可以使用re.findall

import re
s = '123 456-7890'
new_s = [int(i) for i in re.findall('\d', s)]

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

答案 2 :(得分:0)

您还可以删除所有非数字\D

import re
unformattedPhone = "123 456-7890"
nrs = [int(i) for i in re.sub('\D', '', unformattedPhone)]
print(nrs)

输出

[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]