我想检查我的用户输入是整数、字符串还是日期。
data1 = raw_input("data = ")
print(data1)
if isinstance(data1, datetime.datetime.strptime(data1, '%Y-%m-%d')):
print("date it is")
elif isinstance(data1, int):
print("int it is")
elif isinstance(data1, basestring):
print("str it is")
但它显示:
time data '10' does not match format '%Y-%m-%d'
请您参考如下方法:
datetime.datetime.strptime()如果字符串与格式不匹配,将引发ValueError。raw_input()总是返回字符串对象,所以isinstance(data1, int)如果您在检查之前不将data1转换为 int 对象,则始终为False。我建议使用
try...except像下面的代码一样捕获ValueError:import datetime data1 = raw_input("data = ") print(data1) try: datetime.datetime.strptime(data1, '%Y-%m-%d') except ValueError: try: int(data1) except ValueError: print("str it is") else: print("int it is") else: print("date it is")演示:
kevin@Arch ~> python2 input_check.py data = 2014-01-02 2014-01-02 date it is kevin@Arch ~> python2 input_check.py data = 12 12 int it is kevin@Arch ~> python2 input_check.py data = foobar foobar str it is
