python - 在 Python 中将 unicode 字符编码为 HTML 实体,不包括标签

标签 python html email beautifulsoup lxml

您可能知道,要使电子邮件在许多客户端中有效,必须对所有 unicode 字符进行编码。我想在 Python 脚本中自动执行此编码。

显然需要从转换中排除标签,否则 html 将无法工作 - 这样做确实是一个复杂的部分 - 为了确保成功,有必要使用像 lxml 或 beautifulsoup 这样的解析包。

据我所知,这两个包都不支持转换为编号的 unicode 实体,例如 & #x6F22 ; (汉)

任何帮助都是非常宝贵的,我整天都在用头撞墙!

最佳答案

我遇到过类似的问题,但是在原始文本上运行以下表达式总是足够的,它只是将十六进制实体转换为十进制实体,然后就可以很好地解析了:

>>> hex_entity_pat = re.compile('&#x([^;]+);')
>>> hex_entity_fix = lambda x: hex_entity_pat.sub(lambda m: '&#%d;' % int(m.group(1), 16), x) # convert hex to dec entities
>>> BeautifulSoup(hex_entity_fix("<b>&#x6F22;</b>"), convertEntities=BeautifulSoup.ALL_ENTITIES)
<b>漢</b>

关于python - 在 Python 中将 unicode 字符编码为 HTML 实体,不包括标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7216972/

相关文章:

python - 将带有 unicode、decimal 和 date 对象的元组转换为 python 中的字符串

python - TensorFlow 2.0 [条件 x == y 不满足元素方向 :]

html - 如何覆盖显示 :none property applied to parent element in specific child elements

c# - 从接收邮件服务器 (POP) 读取电子邮件

python - 循环嵌套字典值

python - 了解非平凡情况下生成器内部的 StopIteration 处理

javascript - 我如何使用 javascript 和 css 使栏出现和消失

javascript - div 向相反方向滚动

php - 群发邮件ID重复检查

java - 正则表达式电子邮件验证长度