gpt4 book ai didi

python - 在 Django 中格式化未修饰的电话号码?

转载 作者:太空狗 更新时间:2023-10-29 20:32:38 25 4
gpt4 key购买 nike

我有一个数据库塞满了电话号码作为字符串,它们的格式都像 1112223333,我想在我的 django 模板中将它显示为 111-222-3333

我知道我能做到

n = contacts.objects.get(name=name)
n.phone = n.phone[:3] + '-' + n.phone[3:6] + '-' + n.phone[6:]

但是有没有更好/更 pythonic 的方式?

最佳答案

如果您所有的数字都采用相同的格式,那么对于您的用例来说可能有点过分了,但您可以考虑使用 phonenumbers模块。它可以让您非常轻松地添加功能(例如国际电话号码、不同的格式等)。

您可以像这样解析您的数字:

>>> import phonenumbers
>>> parsed_number = phonenumbers.parse('1112223333', 'US')
>>> parsed_number
PhoneNumber(country_code=1, national_number=1112223333L, extension=None, italian_leading_zero=False, country_code_source=None, preferred_domestic_carrier_code=None)

然后,要按照您想要的方式对其进行格式化,您可以这样做:

>>> phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumber())
u'111-222-3333'

请注意,您可以轻松地使用其他格式:

>>> phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.NATIONAL)
u'(111) 222-3333'
>>> phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
u'+1 111-222-3333'
>>> phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.E164)
u'+11112223333'

关于python - 在 Django 中格式化未修饰的电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com