我想查看我的用户输入,无论是整数,字符串还是日期。
time data '10' does not match format '%Y-%m-%d'
但它显示:
net::ERR_INSUFFICIENT_RESOURCES
答案 0 :(得分:5)
datetime.datetime.strptime()
会引发ValueError
。
raw_input()
始终返回字符串对象,因此如果您在检查前未将False
转换为int对象,则isinstance(data1, int)
始终为data1
。
我建议使用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
答案 1 :(得分:1)
Kevin建议的是正确的方法。但是,如果您有时卡住并需要在编码过程中快速验证某些变量的类型,例如您可以使用type()。只是为了确定。最终的代码应该像Kevin的例子一样进行适当的错误处理。
print type(1)
print type('words')
print type(True)
OR
user_input = raw_input('>')
print type(user_input), user_input
OR
user_input2 = raw_input('>')
user_input2 = int(user_input2)
print type(user_input2), user_input2
OR
user_input3 = raw_input('>')
user_input3 = float(user_input3)
print type(user_input3), user_input3