读取csv文件列中的异常

时间:2017-09-14 17:08:01

标签: python csv

我有以下文件和代码可以正常工作,但是(见下文)使用相同的方法,第二个代码片段与给定文件,会引发错误。

工作代码

def test():
    with open('test.txt','r') as f:
        reader=csv.reader(f)
        for row in reader:
            print(row[0]) #this is column 1
            answer=input("Answer?>>")
            if answer==row[1]: #this is column 2
               print("Yes")
            else:
                print("No")

文件内容

a,1
b,2
c,3

纠正工作输出

>>> test()
a
Answer?>>1
Yes
b
Answer?>>2
Yes
c
Answer?>>

但是,以下代码不起作用:

def round():
    print("===Summary===")
    with open('eventinfo.txt','r',newline="") as f:
        reader=csv.reader(f)
        for row in reader:
            print(row[0])

文件内容:(记录之间的额外线条似乎是在写入文件时创建的)

1,Techhamper,9,9,9,9,9,27

1,Moosecream,8,8,8,8,8,24

1,BizTech,6,6,6,6,6,18

1,Pigacheepot,1,1,1,1,1,3

2,Techhamper,1,1,1,1,1,3

2,Moosecream,2,2,2,2,2,6

错误:

print(row[0])
IndexError: list index out of range

写入此文件的代码如下:

with open("eventinfo.txt","a") as fo:
            writer=csv.writer(fo)
            writer.writerow([round,inventor,i1,i2,i3,i4,i5,totalscore])

如果有答案,我会很高兴:

  1. 从文件中读取的代码中的错误解决方案/修复程序(如何最有效地去除新行字符)

  2. 此外,添加或重写“写入”代码的最佳方法是什么,以便更有效地创建文件内容(就像第一个在每条记录之间没有换行符的内容)第一名。

  3. 提前致谢

1 个答案:

答案 0 :(得分:1)

您可以通过查看row

的长度来跳过空行
for row in reader:
    if len(row) > 0:
        print(row[0])

我在编写代码中看不到会产生空白行的任何内容,所以我不知道如何解决这个问题。您是否正在使用您正在阅读的同一操作系统上书写?如果没有,可能是由于行结束约定的差异。

如果问题出在换行符上,您可以使用newline=None(默认值)代替newline=""修复阅读器代码。