Как разобрать экспорт WordPress CSV с помощью Python

Мне нужно импортировать контент из WordPress в Plone, основанную на Python CMS, и у меня есть дамп таблицы сообщений в виде огромного ванильного файла CSV с использованием ";" в качестве разделителя.

Проблема в том, что стандартный читатель CSV из модуля csv недостаточно умен, чтобы анализировать содержимое HTML внутри строки (post_content поле).

Например, когда парсер встречает что-то вроде <p>&nbsp;</p> он интерпретирует точку с запятой как разделитель полей, и я получаю больше элементов, чем полей, и поля с неправильным содержимым.

Есть ли другой вариант для решения такого рода вопросов? Обработка строки с помощью регулярного выражения кажется мне довольно страшной.

3 ответа

Решение

После некоторых дополнительных исследований я обнаружил excel-tab диалект, читая текст PEP 0305 (который предложил добавить модуль cvs в Python); это упомянуто в документации модуля, но я сначала не заметил.

Затем я реэкспортировал сообщения, используя вкладку в качестве разделителя (\t).

Я сделал тестовое чтение пакета из 1000 строк и не обнаружил никаких ошибок.

Другим вариантом для небольших сайтов может быть использование pywordpress, питонического интерфейса к API WordPress XML-RPC.

Модуль CSV обеспечивает escapechar Параметр формата, который позволяет вам экранировать разделитель (который вы установили в точку с запятой). Если вы можете предоставить escapechar='\\' в призыве к csv.reader() затем вы можете заменить персонажа \ в вашем файле CSV с \\ и заменить &nbsp; с &nbsp\; (используя опцию поиска / замены в текстовом редакторе).

Другие вопросы по тегам