首页 > 解决方案 > 如何在 Python 中仅从 CKEditors RichTextField 获取文本?

问题描述

我有 CKEditor,我需要它在服务器端的纯文本。我尝试 re.sub 去除标签,但是当有表格、图像或链接时它会失败。我怎样才能避免它们?

当 \xa0 是连续的并且我遇到了一些问题

<a href="#"> abc</a> 

我不想要里面的 abc 文本。而 \xa0 就是其中之一,当其他一些输入像 \xa0 这样的代码不会消除它。

例子:

我有这个字符串:

'<p>wtw tebrs g&nbsp; <u>resgs e<s>re</s> sger</u>g erg<a href="http://resgser g"> rgresg</a> rgergre<a id="grerg" name="grerg"></a>g er gerge ge rge<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="quality" value="high" /><param name="movie" value="e" /><embed pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="e" type="application/x-shockwave-flash"></embed></object> gere</p>\r\n\r\n<hr />\r\n<p>greger gerg ger ge ges s5ulp&uuml;ğna&nbsp; fg</p>\r\n\r\n<table border="1" cellpadding="1" cellspacing="1" style="width:500px">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td>&nbsp;</td>\r\n\t\t\t<td>&nbsp;</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td>&nbsp;</td>\r\n\t\t\t<td>&nbsp;</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td>&nbsp;</td>\r\n\t\t\t<td>&nbsp;</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n\r\n<p>&nbsp;rgesr es ges esg es&uuml;er g sg&uuml; serg&uuml;ser &uuml;ges greklsm r&ouml;e&ccedil; şjgslejr gesi gs relkgjesgrjs pt ıqqoqotjg ler<img alt="" src="terger" /></p>'

我想将字符串输出为:

'wtw tebrs g resgs e re sger g erg rgresg rgergre g er gerge ge rge gere greger gerg ger ge ges s5ulpüğna fg rgesr es ges esg esüer g sgü sergüser üges greklsm röeç şjgslejr gesi gs relkgjesgrjs pt ıqqoqotjg ler'

我把我最好的解决方案放在这里:

def preprocess_text(text):
    text = unescape_entities(text)
    text = re.sub("<.*?>", " ", text)
    text = re.sub("\n|\r|\t|\xa0", " ",  text)
    text = re.sub(" +", " ", text)
    text = text.strip()
    return text

标签: djangockeditor

解决方案


推荐阅读