我有一个列表的列表,像这样:
[['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,因为它会改变如何拆分最终数据)。我在想,如果我无法让它起作用,我可能会尝试将整个列表转换为元组,并使用异常循环处理字符,然后尝试将其转换并拆分回成为一个列表的列表。非常感谢您提供任何帮助或理解为什么这个循环不起作用,或者获取此结果的其他方法。
谢谢!