将字符串转换为 Python 中的浮点数、整数和字符串

Converting strings into floats, int and strings in Python

我必须调用一个 API 有时 returns 我用字符串格式的数值,"288" 而不是 288,或者 "0.1523" 0.1513 个。其他时候,我得到正确的数值,39。我也得到像 "HELLO".

这样的字符串

我需要一个可以将所有输入转换为正确格式的函数。这意味着:

这是我的尝试。问题是这也将我所有的浮点数转换为整数,我不想要这个。当字符串本身是字符串 ("HELLO") 时,这也不起作用。谁能帮我一把?

def parse_value(value):
    try:
       value = int(value)
    except ValueError:
        try:
            value = float(value)
        except ValueError:
            pass
    return value

检查 value 是否包含 .,如果它确实尝试将其转换为浮点数,否则尝试将其转换为 int,如果两者都不起作用,则只是 return 值。

我认为 ast.literal_eval 是正确的选择

from ast import literal_eval

def eval_api(val):
    try:
        return literal_eval(val)
     except NameErrpr:
        Return val

这里有一些东西 quick-and-dirty,只需尝试转换为 intfloat(按此顺序),如果其他所有方法都失败,则只是 return 您拥有的东西。如果您没有字符串(那么它已经是 intfloat),请确保尽早 return 以避免转换数字类型。

def parse(x):
    if not isinstance(x, str):
        return x
    for klass in int, float:
        try:
            return klass(x)
        except ValueError:
            pass
    return x

尝试使用 isinstance():

def parse_value(value):
    if isinstance(value, str): # Check if the value is a string or not
        if value.isnumeric(): # Checks if the value is an integer(in the form of a string)
            return int(value)# Returns int of value
        else:
            try:
                return float(value) # Returns the float of that value
            except ValueError: # Incase it's not a float return string
                pass
    return value # return the value as it is if it's not a string.

输出:

parse_value('12.5')
12.5
parse_value('12')
12
parse_value('hello')
'hello'
parse_value(12)
12
parse_value(12.5)
12.5