Я пытаюсь разобрать cities5000.txt
с сайта geonames.org() с модулем csv python и получить очень странное поведение: cvs
не разбивают все строки в файле.Странное поведение модуля csv python - не разбивать записи
, например:
>>> 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 записей, которые только что признаны как часть полей других записей. Но все остальное прекрасно разбирается в анализируемых данных.
Вопрос в том, в чем причина этого и как я могу избежать его, не разбивая все эти записи вручную?
У меня есть другой результат с этим файлом. Первые две печати '46957' и последняя вызывают ошибку. –
@LevLevitsky то же самое, что последнее поднимает '_csv.Error: поле больше предела поля (131072)' – Gnijuohz
ну, это на самом деле та же проблема - он пытается поместить много строк в одно поле. Возможно, у меня есть старая версия этого файла, поэтому данные немного отличаются. Во всяком случае, у меня уже есть ответ, спасибо за попытку помочь – Cassum