【问题标题】:Python: Convert quote in HTML content not HTML tagsPython:转换 HTML 内容中的引号而不是 HTML 标记
【发布时间】:2013-08-18 22:31:02
【问题描述】:

我有一段这样的 HTML:

<pre class="script">template("main/GlobalShared");</pre>
<pre class="script">
var link = '/Draft/Tracker_1.1';
if (wiki.pageexists(link)) {
    &lt;div class="version"&gt; web.link(wiki.uri(link), 'Version 1.1') &lt;/div&gt;
}
</pre>

我需要这样转换:

<pre class="script">template(&quot;main/GlobalShared&quot;);</pre>
<pre class="script">
var link = '/Draft/Tracker_1.1';
if (wiki.pageexists(link)) {
    &lt;div class=&quot;version&quot;&gt; web.link(wiki.uri(link), 'Version 1.1') &lt;/div&gt; 
}
</pre>

我一直在摆弄正则表达式,但我似乎无法接近。 我认为我的选择是完全错误的。

如果可能的话,谁能指出我正确的方向?

【问题讨论】:

  • 您应该使用 DOM 解析器(我认为 Beautiful Soup 在 Python 中很好),然后遍历 DOM 的文本节点,只在那里进行替换。仅使用正则表达式,您将无法可靠地做到这一点。

标签: python html regex mindtouch


【解决方案1】:

改用 HTML 解析器,然后简单地将引号替换为 .replace('"', '&amp;quot;')

BeautifulSoup 让这项任务变得简单:

from bs4 import BeautifulSoup

soup = BeautifulSoup(htmlsource)

for string in soup.strings:
     string.replace_with(string.replace('"', '&quot;'))

htmlsource = str(soup)

【讨论】:

  • 我刚刚注意到它将引号转换为 &quot;。有什么想法吗?
  • 啊,因为分配给 BeautifulSoup 树中的文本会自动引用字符串。 &amp;amp;&amp;amp; 取代,因为这是要采取的正确措施。
  • 阅读文本将再次为您提供&amp;amp;quot;,因为任何阅读 DOM 文本的内容都会自动取消引用与号。
  • 您只能在源 HTML 文本中看到&amp;amp;quot;
  • 我有一个 WX 应用程序,它从 TextCtrl 读取 HTML,必须修复该 quot 问题,然后将其添加或附加到它通过 API 获取的某些 HTML 并将结果放入 API。 API 将不接受 &quot;.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
  • 2019-02-19
  • 2015-12-15
  • 1970-01-01
  • 2023-03-28
  • 2015-01-04
相关资源
最近更新 更多