У меня есть дамп данных CSV, который формируется следующим образом:
"field1";"{"JSON-KEY": "JSON-VALUE"}";"field3"
Если я использую считыватель CSV Python следующим образом...
csv.reader(csvfile, delimiter=';', quotechar='"')
У меня две проблемы:
(1) Когда строка JSON-VALUE содержит символ разделителя ';' Reader рассматривает его как разделитель и нарушает VALUE в двух областях.
(2) Когда (1) не является проблемой, поле JSON-VALUE неверно истолковывается, чтобы иметь меньше цитаты в начале и еще одну в конце. Например:
['field1','{JSON-KEY": "JSON-VALUE"}"','field3']
Эти две проблемы, вероятно, связаны, но я не могу это исправить, используя документацию Python и другие вопросы здесь. Кто-нибудь ведет к тому, что мне здесь не хватает, и как я могу настроить Reader для этого?
Фактически, данные csv недействительны. Котировки должны быть экранированы следующим образом:
"field1";"{""JSON-KEY"": ""JSON-VALUE""}";"field3"
Если у вас нет контроля над генерации данных csv, вы можете попытаться использовать quotechar=''
а затем обрезать кавычки из полей.
Если есть ;
в json-данных, однако, это было бы проблематично.
Другим вариантом было бы вручную прочитать первое и последнее поле и рассмотреть данные между ними как данные json.
"
в качестве символа кавычки и использует этот escape-символ, эту комбинацию из двух шагов». мог бы проанализировать этот пример, и он мог бы работать на весь ваш дамп (или он может не сработать; не увидев его или не протестировав, трудно сказать).