如何使用 Python 解析 WordPress CSV 导出

How to parse a WordPress CSV export using Python

我需要将内容从 WordPress 导入到 Plone,这是一个基于 Python 的 CMS,我将帖子 table 转储为一个巨大的 CSV vanilla 文件,使用“;”作为分隔符。

问题是来自 csv module 的标准 CSV reader 不够智能,无法解析行内的 HTML 内容(post_content 字段)。

例如,当解析器遇到类似 <p>&nbsp;</p> 的情况时,它将分号解释为字段分隔符,我最终得到的项目多于字段,并且字段内容错误。

有没有其他方法可以解决这类问题?用正则表达式处理行对我来说似乎很可怕。

CSV 模块提供了escapechar 格式参数,它允许您转义分隔符(您已将其设置为分号)。如果您可以在对 csv.reader() 的调用中提供 escapechar='\',则可以将 CSV 文件中的字符 \ 替换为 \,并将 &nbsp; 替换为 &nbsp\;(使用文本编辑器的 find/replace 选项)。

经过一些额外的研究,我通过阅读 PEP 0305 的文本发现了 excel-tab 方言(建议将 cvs 模块添加到 Python);模块文档中有提到,但我一开始没注意到。

然后我使用制表符作为分隔符 (\t) 重新导出了帖子。

我测试读取了一批 1,000 行,没有发现任何错误。

另一种选择,对于较小的站点,可以使用 pywordpress,一个 WordPress 的 pythonic 接口 XML-RPC API.