Python CSV文件行和列迭代

Python CSV文件行和列迭代,python,csv,row,traceback,Python,Csv,Row,Traceback,我在尝试返回csv文件的第1行时遇到问题,该行基本上包含一个数据字符串:[0,300,30,521,53,462,642]。基本上,我试图删除第一列,然后遍历第一行[300、30、521、53、462、642],并将最小值(30)附加到一个名为“b”的列表中。然后对第二行和第二列重复上述操作,依此类推。然而,我得到了一个错误,我不知道这意味着什么。有人能帮我吗?多谢各位 Traceback (most recent call last): File "travelsales.py", lin

我在尝试返回csv文件的第1行时遇到问题,该行基本上包含一个数据字符串:[0,300,30,521,53,462,642]。基本上,我试图删除第一列,然后遍历第一行[300、30、521、53、462、642],并将最小值(30)附加到一个名为“b”的列表中。然后对第二行和第二列重复上述操作,依此类推。然而,我得到了一个错误,我不知道这意味着什么。有人能帮我吗?多谢各位

Traceback (most recent call last):
  File "travelsales.py", line 25, in <module>
    nearest(0);
  File "travelsales.py", line 17, in nearest
    for i in reader.next():
StopIteration

您在删除中耗尽了
读取器
——这类似于读取到文件末尾。这种方法过于复杂。为了满足计算每行的最小值的修订目标,忽略每第n行的第n列,我将这样做:

b = []
for rownum, line in enumerate(reader):
    b.append(min(int(x) for x in line[:rownum] + line[rownum + 1:])
由于已经创建了每个
列表,我认为直接切片比
itertools.islice
更快。列表添加与itertools.chain的比较我不太确定

min(min(int(x) for x in line[:rownum]), min(int(x) for x in line[rownum + 1:]))
可能也值得测试


另外,Python不使用分号。

抱歉,但我可能应该提到我想要包含多行。例如,我有4行,我想删除第一行的第一列,然后找到最小值,删除第二行的第二列,从剩余的行中找到最小值,然后删除第三行的第三列并追加。在第n行中找到最小值时,是否总是忽略第n列?是的,我正在尝试这样做,但我也希望该列保持删除状态,这样我就可以用剩余的列引用第n行中的最小值
import csv

def read_csv(fname, **kwargs):
    with open(fname, 'rb') as inf:
        in_csv = csv.reader(inf, **kwargs)
        return list(in_csv)

def nearest(row):
    return min(int(i) for i in islice(row, 1, None))

def main():
    data = read_csv('distance.csv', delimiter=' ')
    b = [nearest(row) for row in data]

if __name__=="__main__":
    main()
import csv

def read_csv(fname, **kwargs):
    with open(fname, 'rb') as inf:
        in_csv = csv.reader(inf, **kwargs)
        return list(in_csv)

def nearest(row):
    return min(int(i) for i in islice(row, 1, None))

def main():
    data = read_csv('distance.csv', delimiter=' ')
    b = [nearest(row) for row in data]

if __name__=="__main__":
    main()