Python の csv モジュールを使用してcities5000.txt
geonames.org ( http://download.geonames.org/export/dump/cities5000.zip )を解析しようとすると、非常に奇妙な動作が発生します:cvs
ファイル内のすべての行を分割しないでください。
例えば:
>>> len(open('cities5000.txt').read().splitlines())
46955
>>> len(list(csv.reader(open('cities5000.txt'))))
46955
# but here comes some fun
>>>len(list(csv.reader(open('cities5000.txt'), delimiter='\t')))
46048
- は、'\t'
このファイルで使用される実際の区切り文字です。したがって、他のレコードのフィールドの一部として認識されたレコードが約 900 あります。しかし、解析されたデータでは、それ以外はすべて問題ありません。
問題は、これの理由は何ですか?また、これらすべてのレコードを手動で分割せずにどのように回避できるでしょうか?