对于我的代码,我不需要替换数字,只需要括号和破折号之类的东西,我认为我在我的代码中指定了ifoed但它仍然无法工作。这是代码:
def standardize_phone_number(phone_number):
phone_number = str(phone_number.replace('(', '')\
.replace(')', '')\
.replace(' ', '')\
.replace('-', ''))
if not (phone_number.isdigit() and len(phone_number) == 10):
return None
if phone_number[0] == '(' and phone_number[4:6] == ')' and \
phone_number[9] == '-' and len(phone_number) == 13:
return phone_number.replace('(', '').replace(')', '-')
if phone_number[3] == '-' and phone_number[7] == '-' and \
len(phone_number) == 11:
return phone_number.replace('-', '').replace('-', '')
if phone_number[5] == ' ' and phone_number[9] == '-' and \
len(phone_number) == 13:
return phone_number.replace(' ', '').replace('-', '')
else:
return None
print(standardize_phone_number(123-456-7890))
pythonpython-3.x分享改善这个问题编辑46分钟前斯蒂芬劳赫26.9k15315548分钟前 问道诺亚阿布里卡112 新贡献者
- 你好诺亚!这里有一些错误。我能想到的第一个
123-456-7890
是传递给你的函数。这不是字符串,电话号码通常表示为字符串。使用:"123-456-7890"
。我的第二个建议是谷歌Verify phone numbers with regex python
(和类似的短语),并了解正则表达式是什么以及它如何在这里帮助你。它会为您节省大量时间。 - Anton vBR 43分钟前
2答案
问题是你正在传递一个int
输入standardize_phone_number
,特别int
123-456-7890
是-8223
,当standardize_phone_number
需要一个字符串时。
你想要的是:
standardize_phone_number('123-456-7890')
- 谢谢它至少现在运行,但它返回的是没有数字。 - Noah Abrica 20分钟前
改变你的召唤方法
print(standardize_phone_number(123-456-7890))
从这到
print(standardize_phone_number('123-456-7890'))
然后它将正常工作,因为只有字符串对象具有方法“replace()”分享改善这个答案32分钟前 回答abhi krishnan306112
- 谢谢它至少现在运行,但它返回的是没有数字。 - Noah Abrica 14分钟前
分类:文摘
标签:
评论已关闭!