如何在python中检查raw_input是否为整数,字符串和日期

时间:2015-12-07 12:16:05

标签: python python-2.7

我想查看我的用户输入,无论是整数,字符串还是日期。

time data '10' does not match format '%Y-%m-%d'

但它显示:

net::ERR_INSUFFICIENT_RESOURCES

2 个答案:

答案 0 :(得分:5)

    如果字符串与格式不匹配,则
  1. datetime.datetime.strptime()会引发ValueError

  2. raw_input()始终返回字符串对象,因此如果您在检查前未将False转换为int对象,则isinstance(data1, int)始终为data1

  3. 我建议使用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