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

2024-09-28 22:34:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我让一个用户在运行python3脚本时向命令行输入参数,我希望检查特定的参数是float、int、booleans还是string。我很熟悉使用int()函数将“car”这样的字符串转换为int时抛出的错误,也很熟悉使用try/except块尝试将字符串转换为int,如果失败,如何将错误消息映射到对用户有用的输出。我也看到了this前面的问题,这个问题可能会起作用。我只是想知道有没有什么新进展。你知道吗

不确定这是否可行,但正在查找可以这样操作的smart 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

Tags: 函数字符串命令行用户py脚本参数错误
1条回答
网友
1楼 · 发布于 2024-09-28 22:34:39

我通常使用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

相关问题 更多 >