识别输入的数据类型

新手上路,请多包涵

我正在尝试打印用户输入的数据类型并生成如下表:

 ABCDEFGH = String
1.09 = float
0 = int
true = bool

等等

我正在使用 Python 3.2.3,我知道我可以使用 type() 来获取数据的类型,但在 Python 中,所有用户输入都被视为字符串,我不知道如何确定输入是否是字符串或布尔值或整数或浮点数。这是代码的一部分:

 user_var = input("Please enter something: ")
print("you entered " + user_var)
print(type(user_var))

对于字符串,它总是返回 str

原文由 Apeiron Kambyses 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 451
2 个回答
from ast import literal_eval

def get_type(input_data):
    try:
        return type(literal_eval(input_data))
    except (ValueError, SyntaxError):
        # A string, so return str
        return str

print(get_type("1"))        # <class 'int'>
print(get_type("1.2354"))   # <class 'float'>
print(get_type("True"))     # <class 'bool'>
print(get_type("abcd"))     # <class 'str'>

原文由 thefourtheye 发布,翻译遵循 CC BY-SA 3.0 许可协议

input() 总是会返回一个字符串。如果你想看看是否可以转换为整数,你应该这样做:

 try:
    int_user_var = int(user_var)
except ValueError:
    pass # this is not an integer

你可以写一个这样的函数:

 def try_convert(s):
    try:
        return int(s)
    except ValueError:
        try:
            return float(s)
        except ValueError:
            try:
                return bool(s)
            except ValueError:
                return s

但是,如其他答案中所述,使用 ast.literal_eval 将是一个更简洁的解决方案。

原文由 Tom Leese 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题