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()
Я пробовал встроенную в Python библиотеку CSV, Pandas и SmartCSV. Все они рассматривают двойные кавычки как простые символы, а не как одну экранированную двойную кавычку. В целом это хорошо, но теперь мне нужно правильно разобрать этот файл, желательно без написания собственного синтаксического анализатора.
У вас есть предложения по поводу некоторых библиотек Python, которые могут анализировать этот файл?< /п>
Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python
Мобильная версия