【发布时间】:2011-06-30 13:31:10
【问题描述】:
我在我的项目中使用 flatpages 应用程序来管理一些 html 内容。该内容将包括图像,因此我制作了一个ContentImage 模型,允许用户使用管理面板上传图像。
然后,用户应该能够将这些图像包含在平面页面的内容中。他当然可以通过在<img> 标签中手动输入图片网址来做到这一点,但这不是我想要的。
为了让包含图片更方便,我正在考虑这样的事情:
- 用户编辑了一个额外的,比如说
CustomFlatPage模型的pre_content字段(我已经在使用自定义平面模型) - 他没有直接定义
<img>标签,而是使用自定义标签,例如[img=...],其中...是ContentImage实例的名称 - 现在最难的部分:在保存
CustomFlatPage之前,检查pre_content字段是否存在所有[img=...],并按如下方式处理它们: -
搜索
ContentImage模型是否存在具有给定名称的图像实例,如果存在,则将[img=...]替换为正确的<img>标签。 - flatpage 实际
content填充处理过的pre_content,然后保存flatpage(pre_content保持不变,由用户编辑)
我无法应付的部分是文本处理。我应该使用正则表达式吗?显然,对于大字符串,它们可能会很慢。 以及如何组织逻辑?我认为这是一个算法问题,但我对 Python 中的文本处理还不够熟悉,无法自己完成。
谁能给我点线索?
【问题讨论】:
-
我喜欢这样。通常答案是:“不要使用正则表达式,使用 html 解析器”,但是自定义标签呢?我也想知道
-
PS:
BeautifulSoup是一个很棒的 HTML 解析库。如果您愿意查看源代码,我相信这将是一个很棒的资源。它是处理甚至损坏的 html 的王者。我开始认为正则表达式可能适合您的标签,因为它不涉及结束标签的复杂性,但[img=][ img = ]的一些可能变体 -
谢谢。我会看看这个
BeautilfulSoup来源。也许我可以从中借鉴一些想法。
标签: python django algorithm text-processing