我正在使用python上的一些web解析器,现在堆叠了特殊符号,如★ ✿ •
和其他符号,有时我会在utf-8中获取它们:"✿"
,有时使用unicode:{{ 1}}。我找到了table of them,但我唯一能做的就是:
u"\xe2\x80\xa2"
我用双手写下来。
因为我找不到与左边相关联的表格。
请帮帮我吗?
答案 0 :(得分:6)
给定包含单个字符的Unicode字符串:
symbol = u'★'
它可以像这样转换为HTML语法:
html = '&#{};'.format(ord(symbol))
要转换回去,请通过剥离&#
和;
,转换为整数,然后使用chr
(Python 3)或unichr
来提取数字( Python 2)。
如果您需要处理不是来自上述转换的输入,您可能还需要处理十六进制的输入,看起来像&#xZZZ;
其中ZZZ
是一串十六进制数字。要检测这些,只需注意它以x
开头;使用基数16解析余数。
此外,您可能需要处理命名实体。请参阅最后两段。
如果您希望Python处理整个字符串的编码,您可以使用:
text = u"I like symb★ls!"
html = text.encode('ascii', errors='xmlcharrefreplace').decode('ascii')
不幸的是,没有等效的解码,这也不会逃避潜在危险的HTML字符,例如<
(可能是您想要的也可能不是)。如果你需要解码,也许使用一个合适的HTML解析器,它也能够处理像♣
(♣)这样的命名实体。
如果你想处理命名实体并且不想使用真正的HTML解析器,那么机器可读(使用Python的json
模块)list of entities。