我已经要求用户使用raw_input以“AB12 XYZ”格式输入字符串。下面的代码应该验证字符串是否遵循这种格式,通过检查我可以在我希望能够使用的地方使用str和int - 我不知道这是一个优雅的解决方案,但我唯一可以目前想到的。如果输入不符合预期模式,则“非标准”应返回true。但是,目前,非标准总是如此返回。我怀疑这可能与我对str的使用有关,但我不确定究竟是什么。
这是来源:
try:
for x in range(0,1):
str(Tnumberplate[x])
global nonstandard
nonstandard = "true"
except TypeError:
pass
try:
for x in range(4,6):
str(Tnumberplate[x])
nonstandard = "true"
except TypeError:
pass
答案 0 :(得分:2)
我要指出的第一件事是数字可以转换为有效字符串,因此在数字上调用str()
将会成功。
您可以使用的是isdigit()
方法:
>>> numberplate = 'AB12 XYZ'
>>> for character in numberplate:
... print(character.isdigit())
...
False
False
True
True
False
False
False
False
如果将其存储在列表中,则可以简化测试:
expected = [False, False, True, True, False, False, False, False]
results = [character.isdigit() for character in numberplate]
if results == expected:
# the digits are where we expect...
pass