![](/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.