检查Python字符串格式



我可以接受两种格式的用户输入:

  1. 123
  2. 123,234,6028

我需要写一个函数/几行代码来检查输入是否遵循正确的格式。

规则:

  1. 如果一个数字输入,那么它应该只是一个数字之间的1和5位长
  2. 如果有多个数字,那么它应该是逗号分隔的值,但没有空格和字母,最后一个数字后面不允许有逗号/句号/字母。

函数只检查格式是否正确,否则打印Incorrect formatting, try entering again

我认为我需要使用re模块。

Thanks in advance

你可以使用一个简单的正则表达式:

import re
validate = re.compile('d{1,5}(?:,d{1,5})*')
validate.fullmatch('123') # valid
validate.fullmatch('123,456,789') # valid
validate.fullmatch('1234567') # invalid

在测试中使用:

if validate.fullmatch(your_string):
# do stuff
else:
print('Incorrect formatting, try entering again')

另一个选项是:

def validString(string):
listofints = [v.isdigit() for v in string.split(",") if 0 < len(v) < 6]
if not len(listofints) or not all(listofints):
print("Incorrect formatting, try entering again.")

如果输入的ibinput符合规则,下面的代码应该将布尔变量valid保留为True,否则保留为False:

n = input("Your input: ")
valid = True
try:
if int(n) > 9999: 
valid = False
except:
for character in n:
if not character in "0123456789,":
valid = False
if n[-1] == ",":
valid = False

最新更新