Чем можно определить символы конца строки в файле 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.
Зачем?! <br/> Это не конец строки, это просто пустые столбцы. Конец строки там по абзацу. Зачем вообще вам нужно указывать конец строки как-то особенно? Вы можете потом просто отбросить нужное число элементов из кортежа и всё.
Это пустые столбцы. <br/> Конец строки - это \r\n , но тебе это не нужно, т.к. ты смотришь в неверном направлении. <br/> Вот почитай как распарсить CSV корректно <br/> <a href="https://stackoverflow.com/questions/18144431/regex-to-split-a-csv" rel="nofollow">https://stackoverflow.com/questions/18144431/regex...</a>
Похожие вопросы