繁体   English   中英

如何在Python中检查字符串的“自然”数据类型?

[英]How to check for a string's “natural” datatype in Python?

我有一个用户在运行python3脚本时在命令行中输入参数,我希望检查特定的参数是否为浮点数,整数,布尔值或字符串。 我熟悉使用int()函数将“ car”之类的字符串强制转换为int时引发的错误,还熟悉使用try / except块尝试将字符串强制转换为int的错误,如果不成功,则如何将错误消息映射到对用户有用的输出。 我也看到前面的问题,这可能会完成任务。 只是想知道是否有任何新的发展。

不知道这是否可行,但是正在寻找一个可以这样运行的智能type()函数:

#!/usr/bin/env python3

import sys

smarttype(sys.argv[-1])

并能够处理以下几种输入:

./script.py 50
./script.py True
./script.py 50.0
./script.py run

并输出:

int
bool
float
str

我通常使用ast.literal_eval来解析“基本”数据类型:

type(ast.literal_eval('50')) # outputs int

但是,您需要使用一组引号将某些内容标记为字符串(否则,每个输入都可以视为字符串):

type(ast.literal_eval('run')) # error
type(ast.literal_eval('"run"')) # string

如果要允许未声明的字符串,可以执行以下操作:

def parse_data(x):
    """Takes a string x and returns the "value" of x"""
    try:
        return ast.literal_eval(x)
    except (ValueError, SyntaxError):
        return x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM