阅读csv文件列中的异常
问题描述:
我有以下文件和代码工作绝对正常,但(见下文)使用相同的方法,第二个代码段与给定的文件,引发错误。阅读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])
一个答案,我会很高兴,如果:
在从文件中读取代码中的错误的解决方案/修复(如何最有效地剥离换行符)
此外,什么是添加或改写的最佳方式我'编写'代码,以更高效地创建文件内容(像第一个没有每条记录之间的换行符的文件)。
在此先感谢
答
您可以通过检查的row
长度跳过空行:
for row in reader:
if len(row) > 0:
print(row[0])
我没有看到在编写代码,将创建空行什么,虽然,所以我不知道如何解决这个问题。您是否正在阅读您正在阅读的相同操作系统?如果不是,这可能是由于行结束约定的差异。
如果问题出现在换行符中,则可以使用newline=None
(默认值)而不是newline=""
来修复读取器代码。
我删除了阅读器代码中的newline =“”,并尝试换行=无,但都没有工作 – MissComputing
我看不到空行如何被创建......任何人?不,不幸的是,我只是使用相同的操作系统 – MissComputing
是否有可能“totalscore”以换行符结束? – Barmar