Как разобрать экспорт WordPress CSV с помощью Python
Мне нужно импортировать контент из WordPress в Plone, основанную на Python CMS, и у меня есть дамп таблицы сообщений в виде огромного ванильного файла CSV с использованием ";" в качестве разделителя.
Проблема в том, что стандартный читатель CSV из модуля csv недостаточно умен, чтобы анализировать содержимое HTML внутри строки (post_content
поле).
Например, когда парсер встречает что-то вроде <p> </p>
он интерпретирует точку с запятой как разделитель полей, и я получаю больше элементов, чем полей, и поля с неправильным содержимым.
Есть ли другой вариант для решения такого рода вопросов? Обработка строки с помощью регулярного выражения кажется мне довольно страшной.
3 ответа
После некоторых дополнительных исследований я обнаружил excel-tab
диалект, читая текст PEP 0305 (который предложил добавить модуль cvs в Python); это упомянуто в документации модуля, но я сначала не заметил.
Затем я реэкспортировал сообщения, используя вкладку в качестве разделителя (\t
).
Я сделал тестовое чтение пакета из 1000 строк и не обнаружил никаких ошибок.
Другим вариантом для небольших сайтов может быть использование pywordpress, питонического интерфейса к API WordPress XML-RPC.
Модуль CSV обеспечивает escapechar
Параметр формата, который позволяет вам экранировать разделитель (который вы установили в точку с запятой). Если вы можете предоставить escapechar='\\'
в призыве к csv.reader()
затем вы можете заменить персонажа \
в вашем файле CSV с \\
и заменить
с  \;
(используя опцию поиска / замены в текстовом редакторе).