TypeError: sequence item 2: expected str instance, list found解决方法
时间: 2023-09-26 16:09:27 浏览: 240
这个错误通常是由于在尝试将列表写入CSV文件时,其中包含了另一个嵌套的列表或元组,而CSV文件只能包含字符串。你可以尝试将嵌套的列表转换为字符串,或者使用递归来将嵌套的列表展开为扁平的列表。
以下是一个将嵌套列表转换为字符串的示例代码:
```python
import csv
data = [['John', 'Doe', [25, 30]], ['Jane', 'Doe', [30, 35]], ['Bob', 'Smith', [40, 45]]]
# 将嵌套的列表转换为字符串
data_str = []
for row in data:
new_row = [str(x) if not isinstance(x, list) else str(x[0]) + '-' + str(x[1]) for x in row]
data_str.append(new_row)
# 将数据写入CSV文件
with open('data.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data_str)
```
在这个示例代码中,我们使用了一个循环来遍历数据列表,将嵌套的列表转换为字符串,然后将新的字符串列表写入CSV文件中。
如果你想使用递归来展开嵌套的列表,可以使用以下代码:
```python
import csv
data = [['John', 'Doe', [25, 30]], ['Jane', 'Doe', [30, 35]], ['Bob', 'Smith', [40, 45]]]
def flatten(lst):
"""递归函数:将嵌套的列表展开为扁平的列表"""
for item in lst:
if isinstance(item, list):
yield from flatten(item)
else:
yield item
# 展开嵌套的列表
data_flat = [[*row[:2], *flatten(row[2:])] for row in data]
# 将数据写入CSV文件
with open('data.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data_flat)
```
在这个示例代码中,我们定义了一个名为`flatten()`的递归函数,该函数将嵌套的列表展开为扁平的列表。然后,我们使用列表推导式和`flatten()`函数来展开嵌套的列表,并将新的扁平列表写入CSV文件中。
阅读全文