[英]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.