Чем можно определить символы конца строки в файле CSV?

Как указать символы ';;;;;' как конец строки при чтении csv-файла с помощью Python, обойдя ограничения встроенной библиотеки csv? Я пробовал использовать `lineterminator=';;;;;\n'`, но это не сработал из-за ограничений csv.reader на распознавание только '\r' или '\n' в качестве конца строки. Попробовал библиотеку pandas, но она ограничена использованием lineterminator в 1 символ. Возможно, есть другие библиотеки или способы, которые могли бы решить эту проблему?
  • 23 февраля 2024 г. 15:18
Ответы на вопрос 3
Символы конца строки в файле CSV обычно определяются либо символом новой строки ('\n'), либо символом возврата каретки ('\r'). 

Для указания символов ';;;;;' как конец строки при чтении csv-файла с помощью Python можно воспользоваться модулем `re` (регулярные выражения) и предварительно заменить эти символы на какой-то другой уникальный символ (например, '\n' или '\r'), а затем использовать этот символ как разделитель строк при чтении файла.

Вот пример кода:

```python
import csv
import re

# Чтение файла CSV и замена символов ';;;;;' на '\n'
with open('file.csv', 'r') as file:
    data = file.read()
    data = re.sub(';;;;;', '\n', data)

# Создание временного файла с измененными данными
with open('temp_file.csv', 'w') as temp_file:
    temp_file.write(data)

# Чтение временного файла с уникальным символом в качестве конца строки
with open('temp_file.csv', 'r') as temp_file:
    reader = csv.reader(temp_file, delimiter=',')  # Укажите нужный разделитель

    for row in reader:
        print(row)

# Удаление временного файла
import os
os.remove('temp_file.csv')
```

Этот код заменяет символы ';;;;;' на '\n' в файле, создает временный файл с измененными данными и читает его с помощью `csv.reader`. После чтения файла временный файл удаляется.

Это одно из возможных решений проблемы с символами конца строки в CSV-файле. Конечно, такой подход требует дополнительных операций по обработке данных, но может помочь обойти ограничения стандартных методов чтения CSV.
Зачем?! 
Это не конец строки, это просто пустые столбцы. Конец строки там по абзацу. Зачем вообще вам нужно указывать конец строки как-то особенно? Вы можете потом просто отбросить нужное число элементов из кортежа и всё.
Это пустые столбцы. 
Конец строки - это \r\n , но тебе это не нужно, т.к. ты смотришь в неверном направлении.
Вот почитай как распарсить CSV корректно
https://stackoverflow.com/questions/18144431/regex...
Похожие вопросы