检查 Python 字符串格式
Check Python String Formatting
我可以接受两种格式的用户输入:
123
123,234,6028
我需要编写 function/a 几行代码来检查输入是否遵循正确的格式。
规则:
- 如果输入单个数字,则它应该是一个长度介于 1 到 5 位之间的数字
- 如果多于一个数字,则它应该是逗号分隔值,但没有空格和字母,最后一个数字后不允许 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.")
我可以接受两种格式的用户输入:
123
123,234,6028
我需要编写 function/a 几行代码来检查输入是否遵循正确的格式。
规则:
- 如果输入单个数字,则它应该是一个长度介于 1 到 5 位之间的数字
- 如果多于一个数字,则它应该是逗号分隔值,但没有空格和字母,最后一个数字后不允许 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.")