如何使用HTML实体将Unicode编码为ASCII

时间:2013-10-17 18:57:36

标签: python unicode encoding utf-8

我需要使用Python中的HTML实体将unicode UTF-8字符串编码为ASCII。

要明确:

source = u"Hello…"
wanted = "Hello…"

这不是解决方案:

as_ascii = source.encode('ascii', 'xmlcharrefreplace')

因为as_ascii将设置为Hello… - 即使用XML字符引用,而不是HTML字符引用。

是否有Python模块/函数/实体字典可以:

  1. 使用HTML字符引用将unicode解码为ASCII。
  2. 将具有XML字符引用的ASCII字符串替换为HTML字符引用(视情况而定)。

1 个答案:

答案 0 :(得分:2)

示例程序(文件decode_to_entity.py):

#-*- coding: utf-8 -*-

import htmlentitydefs as entity

def decode_to_entity(s):
        t = ""
        for i in s:
                if ord(i) in entity.codepoint2name:
                        name = entity.codepoint2name.get(ord(i))
                        t += "&" + name + ";"
                else:
                        t += i
        return t



print(decode_to_entity(u"Hello…"))

示例执行:

$ python decode_to_entity.py
Hello…