将列表中的数字字符串转换为数字(Integer/float)类型



我有一个混合类型数据的列表:

list = ['Diff', '', '', 0, '+16.67%', '+2.81%', 0, '+13.33%']

我只想将这个列表中的数字字符串转换为整数/浮点,所以我的列表将是:

newlist = ['Diff', '', '', 0, +16.67%, +2.81%, 0, +13.33%]

我知道这个res = [eval(i) for i in list]可以将所有字符串转换为整数,如果我的列表中的所有字符串都是数字字符串,那么我该如何只转换混合类型列表中的数字字符串呢?

在python中进行类型转换时,首先尝试转换,并在转换失败时提供合理的回退("请求原谅,而不是许可"(。转换可能会出现太多问题,很难提前全部检查。

def maybe_int(x):
try:
return int(x)
except (TypeError, ValueError):
return x

lst = ['1', 'yes', 'diff', '43', '2', '4']
print([maybe_int(x) for x in lst])

要处理像12.34%这样的值,可以执行以下操作:

def convert(x):
x = str(x)
if x.endswith('%'):
try:
return float(x[:-1])
except ValueError:
return x
try:
return float(x)
except ValueError:
return x
result = [convert(x) for x in your_list]

这是一种方法,方法是检查str是否为numeric,如果它是一个数值,则键入cast-to-int

list = ['1', 'yes', 'diff', '43', '2', '4']
print(list)
for i, n in enumerate(list):
if n.isnumeric():
list[i] = int(n)
print(list)

我认为你可以使用try-except:

for i in range(len(array)):
try:
array[i] = int(array[i])
except:
print("Can not cast this element to int") # you can write nothing here

更多关于尝试的信息,除了这里

最新更新