python - 如何确保字符串的格式正确

标签 python string list

<分区>

我需要确保输入的字符串格式正确。它必须采用以下格式: '#### #### #### ####' 类似于信用卡号。如何确保我的代码不会接受类似“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/

相关文章:

c++ - 在 Qt 中;将 QString 中每个单词的首字母大写的最佳方法是什么?

python - 将列表分成两个单独的列表,由 python 中的每个其他项目

java - 当我删除 List<List<String>> 中特定索引处的元素时出现 UnsupportedOperationException?

python - 如何在图表中绘制 pandas groupby 值

python - 从python中的字符串中提取英文单词

c++ - 如果不是直接从代码中使用,为什么要包含 <string>?

javascript - 递增字符串中包含的特定数字

python - 如何将每个字典值插入列表中相应键之后?

python - 术语 : Python and Numpy - `iterable` versus `array_like`

python - 交换实体在列表中的位置