如何在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中将列表的连续部分拆分为子列表?

如何将字符串拆分为列表并在python中将两个已知令牌合并为一个?

在 python 中将 256 位哈希拆分为 32 位前缀

如何将一列中的单词拆分然后在Python中将单词整合在一起,即二维列表到一维列表?

如何在python中将单个数字转换为单个项目列表