![](/img/trans.png)
[英]Python: IndexError: list index out of range (reading from CSV with 3 columns)
[英]IndexError: list index out of range in CSV file reading python
我有一个包含30000000个条目的csv文件。 像这样
കൃഷി 3
വ്യാപകമാകുന്നു 2
നെല്കൃഷി 2
വെള്ളം 2
നെല്ല് 2
മാത്രമേ 2
ജല 2
当我尝试反转单词顺序时,出现以下错误
Traceback (most recent call last):
File "/home//grpus/dg.py", line 8, in <module>
writer.writerow((row[1], row[0]))
IndexError: list index out of range
这是代码:
import csv
with open('s.csv', 'rb') as f:
reader = csv.reader(f, delimiter='\t')
with open("revmal.txt", "w") as o:
writer = csv.writer(o, delimiter='\t')
for row in reader:
writer.writerow((row[1], row[0]))
编辑
writer.writerow(row[::-1])
当我尝试修复它时
如何解决这个错误?
Traceback (most recent call last):
File "/home/grpus/dg.py", line 7, in <module>
for row in reader:
Error: field larger than field limit (131072)
该文件的大小为1.4 Gb
wc -L s.csv
936
{if(length($0)>max){max=length($0);maxline=$0}}END{print maxline} This produced
! 1,186个字符
您至少有一行没有两列,且各列之间没有一个制表符。 例如,如果显示为空行,或者您的格式实际上未使用制表符。
您有两种选择:
跳过行数少于所需的行:
for row in reader: if len(row) < 2: continue writer.writerow((row[1], row[0]))
修复分隔符以匹配实际文件内容:
reader = csv.reader(f, delimiter=' ')
如果您要处理多个文件,并且这些文件并非都遵循相同的CSV方言,则可以使用csv.Sniffer()
类尝试自动执行定界符选择。
由于您要做的就是以相反的顺序写入文件,因此只需将同一行写回,但是要相反。 像这样:
writer.writerow(row[::-1])
负索引从右开始,而负步进值(slice语法中的第三个参数)将简单地反转对象。
这将停止您现在看到的错误,并且如果您的行列不是2,则它们也将以相反的方式写入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.