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