python列表字符串转整数_在Python中,如何将列表列表中的字符串转换为其他类型,如整数,浮点数,布尔值等?...

当给出数据列表时,我被要求将列表中的字符串转换为相应的类型,如果字符串包含整数,则为int;如果不包含整数,则为float.但我遇到了这个问题,它将转换值,但它不会更改列表中的原始值.

例如,如果给出:

d = [['abc', '123', '45.6', 'True', 'False']]

它应该在转换后看起来像这样:

[['abc', 123, 45.6, True, False]]

到目前为止,我已经尝试编写for循环并以这种方式转换值,但正如我所提到的,它不会更改原始列表:

for lst in data:

for index in lst:

if index.isdigit():

index = int(index)

elif not index.isdigit():

index = float(index)

我不确定如何解决这个问题,或者是否还有另一种方法可以解决这个问题.任何帮助,将不胜感激!谢谢 :)

解决方法:

您需要使用列表订阅更新初始索引处的项目,即在转换项目后分配给每个索引.您可以使用enumerate执行此操作,该列表为列表中的每个项目提供相应的索引:

import ast

d = [['abc', '123', '45.6', 'True', 'False']]

for lst in d:

for i, x in enumerate(lst):

try:

lst[i] = ast.literal_eval(x)

except (ValueError, SyntaxError):

lst[i] = x

print(d)

# [['abc', 123, 45.6, True, False]]

ast.literal_eval尝试将每个字符串项解析为Python文字,如果失败(有错误),则恢复为原始项(参见EAFP).

如果你有大量的这些字符串,那么编写自己的解析器会更快(尽管代码更简洁,可能容易出错),但是,让ast.literal_eval完成所有脏工作可能会更好.

标签:python,python-3-x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值