我需要将内容从WordPress导入Plone,一个基于Python的CMS,我将posts表转储为一个巨大的CSV vanilla文件,使用“;”作为分隔符。
问题是来自csv module的标准CSV阅读器不够智能,无法解析行内的HTML内容(post_content
字段)。
例如,当解析器遇到像<p> </p>
这样的东西时,它会将分号解释为字段分隔符,并且我最终会得到比字段更多的项目以及包含错误内容的字段。
还有其他方法可以解决这类问题吗?使用正则表达式处理行似乎对我来说非常可怕。
答案 0 :(得分:2)
经过一些额外的研究,我通过阅读PEP 0305(建议在Python中添加cvs模块)的文本发现excel-tab
方言;这在模块文档中有提及,但我一开始并没有注意到。
然后我使用标签作为分隔符(\t
)重新导出帖子。
我做了一个1000行的测试,发现没有任何错误。
答案 1 :(得分:1)
CSV模块提供escapechar
格式参数,允许您转义分隔符(已设置为分号)。如果您可以在escapechar='\\'
的来电中提供csv.reader()
,则可以使用\
替换CSV文件中的字符\\
,并将
替换为 \;
{1}}(使用文本编辑器的查找/替换选项)。
答案 2 :(得分:1)
对于较小的网站,另一个选择可能是使用pywordpress,这是一个WordPress XML-RPC API的pythonic接口。