In Python, is there a way to validate a user input in a certain format?
本问题已经有最佳答案,请猛点这里访问。
在python中,我要求用户输入一个办公代码位置,该位置的格式应该是:x x-x x x(其中x是字母)。
我如何确保他们的输入遵循格式,如果不要求他们再次输入办公室代码?
谢谢!
实现这一点的标准(和语言不可知论)方法是使用正则表达式:
1 2 3 | import re re.match('^[0-9]{2}-[0-9]{3}$', some_text) |
上面的示例返回
1 2 3 4 5 6 7 | ^ # marks the start of the string [0-9] # any character between 0 and 9, basically one of 0123456789 {2} # two times - # a hyphen [0-9] # another character between 0 and 9 {3} # three times $ # end of string |
我建议你多读一些正则表达式(或者re,或者regex,或者regexp,不管你怎么称呼它),它们是程序员的瑞士军刀。
在这种情况下,可以使用正则表达式:
1 2 3 4 5 6 | import re while True: inp = input() # raw_input in Python 2.x if re.match(r'[a-zA-Z0-9]{2}-[a-zA-Z0-9]{3}$', inp): return inp print('Invalid office code, please enter again:') |
注意,在许多其他情况下,您可以简单地尝试将输入转换为内部表示。例如,当输入为数字时,代码应如下所示:
1 2 3 4 5 6 | def readNumber(): while True: try: return int(input()) # raw_input in Python 2.x except ValueError: pass |