Задать вопрос
@3FANG

Как определить символ(ы) конца строки в csv?

есть csv файл с таким содержанием (данные вымышленные):
email;first_name;last_name;phone;address_street;city;birthday;;;;;
n.kuznetsov@mail.ru;Николай;Кузнецов;+7(967)543-69-73;NULL;NULL;1980-12-29;;;;;
r.kuznetsov@ya.ru;Роман;Кузнецов;+7(926)239-76-56;;1980-12-29;;;;;
test.test@yandex.ru;Test;Test;+1(231)231-23-12;NULL;NULL;2005-12-12;;;;;
e.kuznetsova@mail.ru;Елена;Кузнецова;+7(951)561-90-56;;;0089-12-13;;;;;


Как при чтении csv-файла с помощью python указать символы ';;;;;' как конец строки?

Я пробовал с помощью встроенной библиотеки csv:
import csv

with open('test.csv', encoding='utf-8') as file:
    reader = csv.reader(file, delimiter=';', lineterminator=';;;;;\n')
    for _ in range(5):
        print(next(reader))

Но оно не работает, и как я прочитал потом в документации:
Примечание. csv.reader() жестко запрограммирован на распознавание либо '\r', либо '\n' как конца строки и игнорирует lineterminator. Это поведение может измениться в будущем.


Хотя для записи в csv-файл можно использовать подобные символы (';;;;;') и все работает. Странно, мб я чего-то не понимаю...

Пробовал использовать pandas,но там есть ограничения на использование lineterminator в 1 символ:
lineterminator : str (length 1), optional
Character used to denote a line break. Only valid with C parser.


Может есть еще библиотеки для работы с csv или я что-то упускаю...
Спасибо за внимание
  • Вопрос задан
  • 477 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Зачем?!
Это не конец строки, это просто пустые столбцы. Конец строки там по абзацу. Зачем вообще вам нужно указывать конец строки как-то особенно? Вы можете потом просто отбросить нужное число элементов из кортежа и всё.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Steel_Balls
@Steel_Balls
0KLRiyDQv9C40LTQvtGALiDQmNC00Lgg0L3QsNGF0YPQuQ==
Это пустые столбцы.
Конец строки - это \r\n , но тебе это не нужно, т.к. ты смотришь в неверном направлении.
Вот почитай как распарсить CSV корректно
https://stackoverflow.com/questions/18144431/regex...

Стандарт RFC 4180
Существует RFC 4180, предназначенный для стандартизации и упрощения обмена данными в формате CSV. Он предъявляет, в частности, такие требования:

окончание строк в стиле MS-DOS, символы (CR / LF).
необязательная строка заголовка.
каждая строка (запись) должна содержать одинаковое количество полей.
поле может быть заключено в двойные кавычки.
если поле содержит запятые, переносы строк, двойные кавычки, то это поле должно быть заключено в двойные кавычки. Если этого не сделать, то данные невозможно будет корректно обработать.
символ двойной кавычки в поле должен быть удвоен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы