我一直收到一个名为’int’的错误对象没有属性’replace’

2018-10-07 13:02 阅读 3,030 views 次 我一直收到一个名为’int’的错误对象没有属性’replace’已关闭评论

对于我的代码,我不需要替换数字,只需要括号和破折号之类的东西,我认为我在我的代码中指定了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答案

活跃的最老投票4投票

问题是你正在传递一个int输入standardize_phone_number,特别int 123-456-7890-8223,当standardize_phone_number需要一个字符串时。

你想要的是:

standardize_phone_number('123-456-7890')

分享改善这个答案43分钟前 回答亨利伍迪22421319

投票1投票

改变你的召唤方法

print(standardize_phone_number(123-456-7890))

从这到

print(standardize_phone_number('123-456-7890'))

然后它将正常工作,因为只有字符串对象具有方法“replace()”分享改善这个答案32分钟前 回答abhi krishnan306112

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:我一直收到一个名为’int’的错误对象没有属性’replace’ | 文档
分类:文摘 标签:

评论已关闭!