簡體   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