例如:我希望我的用户输入5个数字,并用逗号分隔...
如果我想确保逗号(,)只出现4次,否则他们将不得不重新输入字符串,我该如何验证呢?
示例问题:“请输入5个数字,所有数字之间用逗号分隔-”
错误答案:2,3或4,5,6,7,8,9
好的答案:2,3,4,5,6(4个逗号,5个数字)
我的想法是我应该使用正则表达式。如果还有其他想法,请分享。谢谢!
答案 0 :(得分:2)
您不需要“正则表达式”,这可以通过基本的Python函数完成:
answer = '2,3,4,5,6'
split_answer = answer.split(',')
if len(split_answer) == 5 and all(number.strip().isdigit() for number in split_answer):
print ('good answer')
else:
print ('bad answer')
使用行answer.split(',')
,您可以测试在单个逗号分割后剩余的元素数量;使用all(..)
,您将测试这些元素中的每个元素是否仅由数字组成。其中的strip
是为了确保首先删除周围的空白。
答案 1 :(得分:1)
您可以使用此正则表达式精确匹配5个逗号分隔的数字,
^\d+(?:,\d+){4}$
在这里
^
->输入开始\d+
->匹配一个或多个数字(?:,\d+){4}
->匹配一个逗号,后跟一个或多个数字,并且此模式恰好匹配4次。$
->输入结束如果您的输入可能包含可选空格,则可以使用以下正则表达式。
^\s*\d+\s*(?:,\s*\d+\s*){4}$
这是python示例代码,
import re
arr = ['2,3','4,5,6,7,8,9','2,3,4,5,6']
for s in arr:
if re.match(r'^\d+(?:,\d+){4}$', s):
print(s + ' --> Match')
else:
print(s + ' --> Do not Match')
哪些印刷品
2,3 --> Do not Match
4,5,6,7,8,9 --> Do not Match
2,3,4,5,6 --> Match
答案 2 :(得分:0)
一种非常Python化的方式是:
sample = "1,3,23,12,"
if(len(sample.split(","))<sample.count(",")) and sample.count(",") ==4:
return True
else:
return False
如果在分隔符后缺少字符,上述方法将解决该错误。