【问题标题】:Trying to format user input(phone-numbers, zip codes) but am getting type error尝试格式化用户输入(电话号码、邮政编码)但出现类型错误
【发布时间】:2021-06-17 17:02:19
【问题描述】:

我正在尝试将用户输入格式化为#####-####。但是,我目前遇到类型错误。 “TypeError:预期的字符串或类似字节的对象”。关于如何进行此操作的任何建议? ``

    user_input='0'
while re.fullmatch(r'\d{9}',user_input) is None:
    user_input = input("Please enter a valid zip code+4: \n")
user_input = [user_input]
result = re.fullmatch(r'(\d{5})(\d{4})',   user_input)
result='-'.join(r'(\d{5})(\d{4})')
print(result)

``

*编辑 回溯(最近一次通话最后): 文件“C:\Users\Dante\Python_Projects\PythonLab4.py”,第 30 行,在 邮政编码() Zip_Code 中的文件“C:\Users\Dante\Python_Projects\PythonLab4.py”,第 22 行 结果 = re.fullmatch(r'(\d{5})(\d{4})', user_input) 文件“C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\re.py”,第 196 行,完全匹配 return _compile(pattern, flags).fullmatch(string) TypeError:预期的字符串或类似字节的对象

【问题讨论】:

  • 你必须向我们展示 complete 错误回溯,而不仅仅是最后一行……

标签: python


【解决方案1】:

错误TypeError: expected string or bytes-like object 将列表传递给re.fullmatch(),但需要 AnyStr (str, bytes) 类型。删除user_input = [user_input] 行或在re.fullmatch() 中使用user_input[0]。 但是通过更正此错误,您会得到(-\-d-{-5-}-)-(-\-d-{-4-}-),而不是12345-6789。试试这个代码:

import re

user_input = '0'
while re.fullmatch(r'\d{9}', user_input) is None:
    user_input = input("Please enter a valid zip code+4: \n")
result = re.sub(r'(\d{5})(\d{4})', r"\1-\2", user_input)
print(result)

【讨论】:

猜你喜欢
  • 2017-12-20
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
相关资源
最近更新 更多