Разбор нестандартного файла csv в pythonPython

Программы на Python
Ответить
Anonymous
 Разбор нестандартного файла csv в python

Сообщение Anonymous »

Я пытаюсь проанализировать файл csv, который не контролирую. Файл содержит текст в кавычках, например ...,text "text"",..., и я хочу, чтобы проанализированное поле выглядело как текст "text".
Java Opencsv может отлично проанализировать этот файл, но библиотеке Python необходимо заключить в кавычки все поле (

Код: Выделить всё

...,"text ""text""",...
), чтобы правильно вывести текст из кавычек.
Я подготовил набор тестов, который иллюстрирует мою проблему.

Код: Выделить всё

test.csv

Код: Выделить всё

col1,col2
idk,text ""text""
idk,"text ""text"""
idk,"text, text"
idk,text """"text""""
idk,"text """"text"""""
Ожидаемый результат:

Код: Выделить всё

[
{'col1': 'idk', 'col2': 'text "text"'},
{'col1': 'idk', 'col2': 'text "text"'},
{'col1': 'idk', 'col2': 'text, text'},
{'col1': 'idk', 'col2': 'text ""text""'},
{'col1': 'idk', 'col2': 'text ""text""'},
]
Тестовая программа:

Код: Выделить всё

import csv
import unittest
from typing import Dict, List

def parse_input(path: str) -> List[Dict[str, str]]:
with open(path, 'r') as f:
reader = csv.DictReader(f)
return list(reader)

class TestStringMethods(unittest.TestCase):
def test_parsing(self) -> None:
parsed = parse_input('./test.csv')
self.assertEqual(
parsed,
[
{
'col1': 'idk',
'col2': 'text "text"',
},
{
'col1': 'idk',
'col2': 'text "text"',
},
{
'col1': 'idk',
'col2': 'text, text',
},
{
'col1': 'idk',
'col2': 'text ""text""',
},
{
'col1': 'idk',
'col2': 'text ""text""',
},
],
)

if __name__ == '__main__':
unittest.main()
Я не нашел параметров, которые позволили бы мне делать то, что я хочу. Я думал, что параметр двойной кавычки будет работать, но значение по умолчанию уже равно True.
Я пробовал встроенную в Python библиотеку CSV, Pandas и SmartCSV. Все они рассматривают двойные кавычки как простые символы, а не как одну экранированную двойную кавычку. В целом это хорошо, но теперь мне нужно правильно разобрать этот файл, желательно без написания собственного синтаксического анализатора.
У вас есть предложения по поводу некоторых библиотек Python, которые могут анализировать этот файл?< /п>

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»