【发布时间】:2015-12-25 11:48:33
【问题描述】:
我要求用户使用 raw_input 输入格式为“AB12 XYZ”的字符串。下面的代码应该通过检查我是否可以在我希望能够使用的地方使用 str 和 int 来验证字符串是否遵循这种格式 - 我知道,这不是一个优雅的解决方案,但我唯一可以目前想到的。如果输入不符合预期的模式,“非标准”应该返回为真。然而,目前,非标准总是返回为真。我怀疑这可能与我对 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
【问题讨论】:
-
你最好使用
True和False而不是字符串。 -
另外你为什么认为
str(<anything>)会抛出一个TypeError?除非您手动编写了一个从__str__()函数抛出TypeError的类,否则不应该这样做。 -
@ForceBru 这可能是真的,但我实际上不知道如何 - 正如你可能知道的那样,我对 python 的了解非常有限。
-
你为什么不使用正则表达式???
re.match(r"^[A-Z]{2}[0-9]{2} [A-Z]{3}$", "AB12 XYZ") -
@brunodesthuilliers 如果你能解释每个部分的具体作用,我会使用它。但是,我不喜欢在我的程序中使用我不理解的代码,所以现在可能不是:)
标签: python validation