作者:jin冫g_-_- | 来源:互联网 | 2024-11-25 18:46
问题背景:
给定一个嵌套列表:
data = [['A', 'B', 'C'], ['001', 'ddd', 'eee', '10'], ['002', 'fff', 'ggg', '20']]
目标是将该列表转换成如下形式:
data = [['A', 'B', 'C'], [1, 'ddd', 'eee', 10], [2, 'fff', 'ggg', 20]]
即,将所有能够被解析为整数的字符串转换为实际的整数。
尝试的方法及其遇到的问题:
尝试使用以下代码进行转换:
formatted = []
for row in data:
new_row = []
for i, col in enumerate(row):
if i != [1,2]:
new_row.append(col)
new_row.append(float(col))
formatted.append(new_row)
print(formatted)
然而,这段代码抛出了一个异常:ValueError: could not convert string to float: A
,这是因为代码试图将非数字字符串(如'A')转换为浮点数。
解决方案:
一种更加‘Pythonic’的方式是,尝试将每个元素转换为整数,如果转换失败,则保留原始的字符串值。以下是修正后的代码:
formatted = []
for row in data:
new_row = []
for elem in row:
try:
new_row.append(int(elem))
except ValueError:
new_row.append(elem)
formatted.append(new_row)
print(formatted)
此方法确保了只有那些可以成功转换为整数的元素才会被转换,而其他元素则保持不变。