Python中IndexError: list assignment index out of range错误解决求助
解决IndexError并正确将结果写入CSV文件
首先,咱们先搞清楚你遇到的IndexError根源:你初始化了一个空列表seleksi = [],然后直接尝试给seleksi[0]赋值——但空列表根本不存在索引0的位置,这就像你要往空抽屉的第一个格子放东西,可抽屉连格子都还没创建,自然会触发错误。
第一步:修复列表赋值问题
你不需要给空列表的索引赋值,直接把p.select()的返回值(也就是包含多个子列表的目标数据)赋值给seleksi即可,这是最直接的方式:
seleksi = p.select() # 直接接收p.select()返回的完整列表
如果后续还需要往列表中追加其他内容,也可以用append方法:
seleksi = [] seleksi.append(p.select()) # 将返回的列表作为一个元素加入,注意此时seleksi是嵌套列表,遍历需调整逻辑
结合你的CSV写入需求,第一种直接赋值的方式更适配。
第二步:修复CSV写入的错误
你后面的写入代码还有个小问题:selections.writerow(selections)里,writerow的参数应该是当前遍历的元素x,而非selections这个writer对象。同时Python3写入CSV时,建议用'w'模式并指定newline=''避免生成多余空行,正确代码如下:
import csv # 获取正确的目标列表 seleksi = p.select() # 写入CSV文件 with open('test.csv', 'w', newline='') as selection: selections = csv.writer(selection) for x in seleksi: selections.writerow(x) # 传入每个子列表,比如['A',1]这类元素
额外补充
如果p.select()返回的是单个列表(比如仅['A',1]),可以直接用writerow写入单行,无需遍历:
single_result = p.select() with open('test.csv', 'w', newline='') as selection: selections = csv.writer(selection) selections.writerow(single_result)
这样修改后,既解决了IndexError问题,也能正确将数据写入CSV文件啦。
内容的提问来源于stack exchange,提问作者RozBarb
相关产品推荐
相关产品推荐

