【发布时间】:2019-12-14 17:46:30
【问题描述】:
我有一个列表,例如:
[['c', '2', '3', '4', 'd', '1'], ['e', '14', '16', '18', 'f', '1'], etc.]
它们都遵循相同的模式(1 个字符串,3 个数字字符串,1 个字符串,1 个数字字符串)。我想将所有数字字符串转换为整数,但这样做有困难。
我尝试了一个异常循环,但它似乎不起作用(我不确定为什么)。 我知道它最初是针对子列表的
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 来定位一个列表,因为它改变了拆分最终数据的方式)。我在想如果我不能让它工作,我可能会尝试一个完整的列表到元组的转换,一个字符的异常循环,然后尝试将它转换并拆分回一个列表列表。非常感谢任何帮助或理解为什么这个循环不起作用,或者其他方法来获得这个结果。
谢谢!
【问题讨论】:
标签: python python-3.x list int