Python将unicode字符转换为html代码和unicode号

时间:2017-04-28 09:14:37

标签: python unicode html-entities

这是我最终想要的:

将unicode字符作为键和html代码+ unicode编号作为列表值的字典。

Basic_Latin = {
        ...
        "@": ["U+0040", "@"],
        ...
        }

如果只给出钥匙,怎么能实现?

我想到这样的事情:

Basic_Latin = {
        ...
        "@": [to_unicode(@), to_html(@)],
        ...
        }

如果发现很多方法可以反过来转换,但不是我想要的。

1 个答案:

答案 0 :(得分:1)

符号包含的所有内容都是字符的Unicode代码点的十六进制和十进制值。使用ord() function可以轻松获得该值,然后格式化生成的整数:

codepoint = ord('@')
unicode_codepoint = 'U+{:04X}'.format(codepoint)  # four-digit uppercase hex
html_escape = '&#{:d};'.format(codepoint)         # decimal number

或作为一种功能:

def codepoints(c):
    codepoint = ord(c)
    return ('U+{:04X}'.format(codepoint), '&#{:d};'.format(codepoint))

该函数返回一个元组而不是一个列表;据推测,这并不需要是可变的。您可能需要考虑使用namedtuple class,以便也可以使用属性访问。

演示:

>>> def codepoints(c):
...     codepoint = ord(c)
...     return ('U+{:04X}'.format(codepoint), '&#{:d};'.format(codepoint))
...
>>> codepoints('@')
('U+0040', '@')