Python 为什么csvkit会给我;列表索引超出范围“;错误?

Python 为什么csvkit会给我;列表索引超出范围“;错误?,python,csv,Python,Csv,我在和一个和csvkit一起工作,但没有进展。如果执行csvcut-n zipcode.csv操作,我会看到一个干净的列列表: 1: zip 2: city 3: state 4: latitude 5: longitude 6: timezone 7: dst 但是我用csvgrep进行的任何搜索都会给我一个错误。下面是一段数据: "99919","Thorne Bay","AK","55.677232","-132.55624","-9","1" "99921"

我在和一个和csvkit一起工作,但没有进展。如果执行
csvcut-n zipcode.csv
操作,我会看到一个干净的列列表:

  1: zip
  2: city
  3: state
  4: latitude
  5: longitude
  6: timezone
  7: dst
但是我用csvgrep进行的任何搜索都会给我一个错误。下面是一段数据:

"99919","Thorne Bay","AK","55.677232","-132.55624","-9","1"
"99921","Craig","AK","55.456449","-133.02648","-9","1"
"99922","Hydaburg","AK","55.209339","-132.82545","-9","1"
"99923","Hyder","AK","55.941442","-130.0545","-9","1"
"99925","Klawock","AK","55.555164","-133.07316","-9","1"
"99926","Metlakatla","AK","55.123897","-131.56883","-9","1"
"99927","Point Baker","AK","56.337957","-133.60689","-9","1"
"99928","Ward Cove","AK","55.395359","-131.67537","-9","1"
"99929","Wrangell","AK","56.409507","-132.33822","-9","1"
"99950","Ketchikan","AK","55.875767","-131.46633","-9","1"
根据,我希望
csvgrep-c2-m“Hyder”zipcode.csv
会出现一个匹配项,但我得到的是:

zip,city,state,latitude,longitude,timezone,dst
list index out of range
我可以在其他csv文件上使用
csvgrep
很好--为什么它会被这个文件阻塞?

您的问题是“zipcodes.csv”格式不正确;它包括空行。例如,第17行为空:

"00607","Aguas Buenas","PR","18.256995","-66.104657","-4","0"

"00609","Aibonito","PR","18.142002","-66.273278","-4","0"
文档作者这样做可能是为了表明邮政编码00608不存在,这在某些情况下可能会有所帮助,但会阻止您使用csvkit实用程序

您可以使用,如果您使用的是基于*NIX的OS,您已经安装好了自动删除空白行,如:

$ sed '/^$/d' zipcode.csv > zipcode2.csv
这将结果存储为“zipcode2.csv”。我们现在可以使用新的“固定”邮政编码文件:

$ csvgrep -c 2 -m "Hyder" zipcode2.csv 
zip,city,state,latitude,longitude,timezone,dst
99923,Hyder,AK,55.941442,-130.0545,-9,1

为了防止像上面描述的那样出现大多数错误,我使用(同样来自csvkit)查找并更正源csv中损坏的数据。还要检查完整的操作指南