gpt4 book ai didi

Python 项目 getter 'string index out of range'

转载 作者:太空宇宙 更新时间:2023-11-03 17:46:07 24 4
gpt4 key购买 nike

下面的代码是我用来排序和打印 csv 文件的代码。有 8 列,我想按第七列(整数)排序​​。我有这个错误:

Traceback (most recent call last):
File "Task 3.py", line 271, in <module>
sort = sorted(file, key=operator.itemgetter(6), reverse=False)
IndexError: string index out of range

这是我为此使用的代码块:

file = open("class1.csv", "r")
sort = sorted(file, key=operator.itemgetter(7), reverse=False)
for eachline in sort:
print (eachline.replace("\n", ""))
file.close()

如有任何帮助,我们将不胜感激,谢谢。

最佳答案

您收到的字符串索引错误是因为将 key=operator.itemgetter(7)sorted() 一起使用会导致它尝试根据 8 进行排序第 th 个字符,而不是 csv 文件中每行数据的该列。

您可以通过首先用 , 字段分隔符分隔每一行来解决此问题,如下所示:

row.split(',')

为了简化将这两个操作一个接一个地应用到每一行,可以将它们与lambda组合成一个复合函数。在下面的代码中,代码中使用的 operator.itemgetter(7) 已替换为对新的自定义 itemgetter 类函数的调用:

def csv_itemgetter(index, delimiter=','):
composite = lambda row: row.split(delimiter)[index]
return composite

with open("class1.csv") as file:
for eachline in sorted(file, key=csv_itemgetter(7)):
print eachline,

如果文件中的某些行可能少于 8 列,您可以轻松地将错误处理添加到处理它们的自定义 itemgetter 中:

def csv_itemgetter(index, delimiter=',', default=''):
def composite(row):
try:
return row.split(delimiter)[index]
except IndexError:
return default
return composite

关于Python 项目 getter 'string index out of range',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29768918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com