gpt4 book ai didi

python - 如何仅将字符串列表的一部分转换为整数

转载 作者:太空狗 更新时间:2023-10-30 00:52:42 25 4
gpt4 key购买 nike

我有一个列表列表,例如:

[['c', '2', '3', '4', 'd', '1'], ['e', '14', '16', '18', 'f', '1'], etc.]

它们都遵循相同的模式(一个字符串,3 个数字串,一个字符串,一个数字串)。我想将所有数字字符串转换为整数,但在这样做时遇到了困难。

我试过一个异常循环,它似乎不起作用(我不确定为什么)。我知道它的目标是子列表,因为最初我得到一个值错误 int() 无法识别基数 10 'c'(子列表第一个元素中的第一个字母。

rows = []
with open(path) as infile:
for line in infile:
line = line.strip()
if not line:
continue
try:
[[int(i) for i in sub] for i in rows for sub in i]
except ValueError:
pass
rows.append(line.split("\t"))
del rows[0]

当我打印其中包含异常循环的结果时,它仍然会生成一个列表列表,就好像异常一开始就不存在一样。例如

[['c', '2', '3', '4', 'd', '1'], ['e', '14', '16', '18', 'f', '1'], etc.] 

而我希望它是:

[['c', 2, 3, 4, 'd', 1], ['e', 14, 16, 18, 'f', 1], etc.]

这是一个数据集分析,所以它的一个要求是保留在这个列表格式的列表中(所以我不能只使用 rows.append 来定位一个列表,因为它改变了如何拆分最终数据)。我在想,如果我不能让它工作,我可能会尝试将完整列表转换为元组,使用字符异常循环,然后尝试将其转换并拆分回列表列表。非常感谢任何帮助或理解为什么此循环不起作用,或通过其他方式获得此结果。

谢谢!

最佳答案

使用:

print([[int(x) if x.isdigit() else x for x in i] for i in rows])

完整代码:

rows = []
with open(path) as infile:
for line in infile:
line = line.strip()
if not line:
continue
rows.append(line.split("\t"))
rows = [[int(x) if x.isdigit() else x for x in i] for i in rows]
del rows[0]

关于python - 如何仅将字符串列表的一部分转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57388467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com