将字符串转换为 Python 中的浮点数、整数和字符串
Converting strings into floats, int and strings in Python
我必须调用一个 API 有时 returns 我用字符串格式的数值,"288"
而不是 288
,或者 "0.1523"
0.1513
个。其他时候,我得到正确的数值,39
。我也得到像 "HELLO"
.
这样的字符串
我需要一个可以将所有输入转换为正确格式的函数。这意味着:
- 如果我得到
"288"
将其转换为整数:288
.
- 如果我得到
"0.323"
将其转换为浮点数:0.323
。
- 如果我得到
288
保持原样(它已经是一个整数)。
- 如果我得到
0.323
保持原样(它已经是浮动的)。
- 如果我得到
"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,只需尝试转换为 int
或 float
(按此顺序),如果其他所有方法都失败,则只是 return 您拥有的东西。如果您没有字符串(那么它已经是 int
或 float
),请确保尽早 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
我必须调用一个 API 有时 returns 我用字符串格式的数值,"288"
而不是 288
,或者 "0.1523"
0.1513
个。其他时候,我得到正确的数值,39
。我也得到像 "HELLO"
.
我需要一个可以将所有输入转换为正确格式的函数。这意味着:
- 如果我得到
"288"
将其转换为整数:288
. - 如果我得到
"0.323"
将其转换为浮点数:0.323
。 - 如果我得到
288
保持原样(它已经是一个整数)。 - 如果我得到
0.323
保持原样(它已经是浮动的)。 - 如果我得到
"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,只需尝试转换为 int
或 float
(按此顺序),如果其他所有方法都失败,则只是 return 您拥有的东西。如果您没有字符串(那么它已经是 int
或 float
),请确保尽早 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