检查 Python 字符串格式

Check Python String Formatting

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

  1. 123
  2. 123,234,6028

我需要编写 function/a 几行代码来检查输入是否遵循正确的格式。

规则:

  1. 如果输入单个数字,则它应该是一个长度介于 1 到 5 位之间的数字
  2. 如果多于一个数字,则它应该是逗号分隔值,但没有空格和字母,最后一个数字后不允许 comma/period/letter。

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

我假设我需要使用 re 模块。

提前致谢

如果输入的 ibnput 符合您的规则,以下代码应将布尔变量 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

您可以使用简单的正则表达式:

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.")