<分区>
我需要确保输入的字符串格式正确。它必须采用以下格式: '#### #### #### ####' 类似于信用卡号。如何确保我的代码不会接受类似“1234 5678 12345678”的内容,但会接受“1234 5678 1234 5678”。我不知道该怎么做。我试过使用 len 函数,但它会接受 len 为 19 的任何内容,无论其格式如何。我的猜测是我需要将它分成 4 个字符串并确保它们都是 4 个字符长,但我不知道该怎么做,或者即使这是正确的方法。
<分区>
我需要确保输入的字符串格式正确。它必须采用以下格式: '#### #### #### ####' 类似于信用卡号。如何确保我的代码不会接受类似“1234 5678 12345678”的内容,但会接受“1234 5678 1234 5678”。我不知道该怎么做。我试过使用 len 函数,但它会接受 len 为 19 的任何内容,无论其格式如何。我的猜测是我需要将它分成 4 个字符串并确保它们都是 4 个字符长,但我不知道该怎么做,或者即使这是正确的方法。
最佳答案
s='1234 5678 1234 5678'
all([len(x) == 4 for x in s.split()])
True
s='1234 5678 12345678'
all([len(x) == 4 for x in s.split()])
False
检查所有也是数字:
s='1234 5678 1234 t578'
all([len(x) == 4 and x.isdigit() for x in s.split()])
False
使用 split
,在空格处拆分字符串。
所以如果 s = '1234 5678 1234 5678'
使用 list comprehension [x for x in s.split()]
其中 x.split()
创建一个列表 ['1234', '5678', ' 1234', '5578']
.
检查 all([len(x) == 4 for x in s.split()])
确保所有元素都是四个字符长并且 x.isdigit()
确保它们是数字。
您可以像 if len(s.split())==4
这样进行初始检查,因为列表中必须有四个元素才能匹配您所需的输入。因此,即使用户添加了像 "1234 5678 1234"
这样的输入,您也会发现该错误。
s='1234 5678 1234 5568'
if len(s.split())==4 and all([len(x) == 4 and x.isdigit() for x in s.split()]):
print "all good"
all good
关于python - 如何确保字符串的格式正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900852/