索引错误列表超出范围
问题描述:
编辑:我认为问题是在csv文件的主体中使用空行。我已经尝试了一些修补程序,但无济于事。它的令人沮丧,因为这个代码原本是工作的Id如果有人有任何想法,以便我可以与我的生活相处:)赞赏索引错误列表超出范围
我有此代码的工作。它会从csv文件输入并将特定列输出到文本文件。我试图让它只打印该行,如果row[32]
包含文本。由于我开始搞乱它,它根本不工作。
它现在给我错误Index error: list out of range
。 csv文件包含许多列和行,所以它绝对不会超出范围。看着它,我看起来很蠢,以至于我再也看不到树木了。我可能已经完全搞砸了,或者它可能只是一些小事。
import csv
import os
with open("raw.csv", "r") as f, open("txtfile.txt", "w") as output:
r = csv.reader(f)
for row in r:
output.write("{} --- {} --- {}\n".format(row[4], row[1], row[6]))
with open("txtfile.txt", "w") as output:
output.write(str(r)+"\r\n")
print("Written successfully")
with open("raw.csv", "r") as f, open("txtfile.txt", "w") as output:
r = csv.reader(f)
for row in r:
if "Active" in row[0] and "Text1"in row[1] or "Text2" in row[1] or "Burglary" in row[1]:
output.write("{} - {} - {}\n".format(row[4], row[6], row[1])
答
我最终解决了这个问题。这是做空行,所以我添加了“行和行[]”的话到if语句。这有忽略空行的影响,从而不会给我索引错误。加入“和行[32]确保它仅打印行,其中行[32]包含文本
with open("test.csv", "r") as f, open("cops.txt", "w") as output:
r = csv.reader(f)
for row in r:
if "Active" in row and row[0] and row[32]:
output.write("{} - {} - {}".format(row[4], row[1], row[6])
+ " {} \n \n".format(row[19]) + " {} \n \n".format(row[32]) + "
{}\n\n".format(row[13]) + "\n\n")
当使用'行[]',里面的值的'[]'是指列标题。所以'行[6]'在列6中打印每行的值,而不是在文件中的第6行的值。 –
这就是我的想法,并且那部分在几天前工作 – nodramas2011