如何在python中将数字列表拆分为电话号码? [复制]
Posted
技术标签:
【中文标题】如何在python中将数字列表拆分为电话号码? [复制]【英文标题】:How do I split a list of numbers into a phone number in python? [duplicate] 【发布时间】:2021-08-30 18:45:07 【问题描述】:我正在尝试回答家庭作业的问题。我必须将输入的数字拆分为电话号码。输入是 8005551212,输出需要看起来像 800-555-1212。
我的问题是我不知道如何专门拆分数字的一部分。我想出了如何使用 % 来选择最右边的数字。现在,我只需要隔离 800 和 555。
非常感谢!
【问题讨论】:
取决于输入的复杂程度,例如它总是只有 10 位数字,还是已经存在其他符号,您是否必须考虑数字、国家代码等中的错误,我建议从查看 strginslices 开始,然后转到正则表达式。跨度> 您是否始终保证输入长度为 10 个字符且需要格式化为 xxx-xxx-xxxx? 【参考方案1】:我会将电话号码转换为字符串,然后使用 Python fstrings 来完成剩下的工作:
s_num = str(num) # num being the phone number integer
f's_num[:3]-s_num[3:6]-s_num[6:]' # this is the result
请记住,这是相当有限的,不会扩展到不同长度的国家/地区代码、扩展等。
【讨论】:
【参考方案2】:您的问题的解决方案非常简单:
a = '8005551212'
print(f'a[:3]-a[3:6]-a[6:]')
【讨论】:
非常感谢!这非常有效!【参考方案3】:你可以试试这个:
n = '8005551212'
# Simple Solution
'-'.join([n[:3],n[3:6],n[6:]])
# Out[29]: '800-555-1212'
# General Solution
ix = [0,3,6]
'-'.join([n[i:j] for i,j in zip(ix, ix[1:]+[None])])
# Out[21]: '800-555-1212'
【讨论】:
【参考方案4】:另一种解决方案,使用re
:
import re
s = "8005551212"
s = re.sub(r"(\d3)(\d3)(.*)", r"\1-\2-\3", s)
print(s)
打印:
800-555-1212
【讨论】:
【参考方案5】:假设输入的长度为 10 位,这可以是一个非常简单的 1 行。
>>>num = "8005551212"
>>>req = "--".format(*num)
>>>print(req)
'800-555-1212'
*
将 10 位数字解压缩到 中
【讨论】:
以上是关于如何在python中将数字列表拆分为电话号码? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
python - 如何首先根据初始列表的单个元素将列表拆分为子列表,然后在python中将列表的连续部分拆分为子列表?
如何将字符串拆分为列表并在python中将两个已知令牌合并为一个?