Python “如何替换”★✿•&引用;用他们的密码?
我正在python上开发一些web解析器,现在使用了一些特殊符号,如Python “如何替换”★✿•&引用;用他们的密码?,python,encoding,character-encoding,html-parsing,Python,Encoding,Character Encoding,Html Parsing,我正在python上开发一些web解析器,现在使用了一些特殊符号,如★ ✿ •和其他,有时我用utf-8:”&&226;&156;&191;,有时用unicode:u”\xe2\x80\xa2“。我已经找到了答案,但我唯一能做的是: set = [] set.append([u"\xe2\x80\xa2","•"]) set.append(["✿","
★ ✿ •
和其他,有时我用utf-8:”&&226;&156;&191;
,有时用unicode:u”\xe2\x80\xa2“
。我已经找到了答案,但我唯一能做的是:
set = []
set.append([u"\xe2\x80\xa2","•"])
set.append(["✿","✿"])
for i in set:
s=s.replace(i[0],i[1])
我是用手写的
因为我找不到将左侧和右侧关联的表
您能帮我吗?给定一个包含单个字符的Unicode字符串:
symbol = u'★'
可以将其转换为HTML语法,如下所示:
html = '&#{};'.format(ord(symbol))
要转换回去,请通过剥离&
和来提取数字
,转换为整数,然后使用chr
(Python 3)或unichr
(Python 2)
如果您需要处理不是来自上述转换的输入,您可能还需要处理十六进制数,它看起来像ZZZ
其中ZZZ
是一组十六进制数字。要检测这些,只需注意它以x
开头;用基数16解析余数
此外,您可能需要处理命名实体。见最后两段
如果希望Python处理整个字符串的编码,可以使用以下方法:
text = u"I like symb★ls!"
html = text.encode('ascii', errors='xmlcharrefreplace').decode('ascii')
不幸的是,没有解码的等价物,这也不能避免潜在的危险HTML字符,如
非常感谢!那么utf-8的情况呢?顺便说一句,我想我可以把它们翻译成unicode,或者用ord()和chr()做一些实验。u“\xe2\x80\xa2”
看起来它被错误地解码为latin-1
,而应该被解码为utf-8
;我想你应该用.encode('latin-1').decode('utf-8')
来解决这个问题。我的回答描述了如何处理â¿对不起,给了s='blablaâ¿bla'
我应该怎么做才能得到'bla✿bla'
?@scytharo:假设Python 3,re.sub(r'(\d+)',lambda c:chr(int(c.group(1))),s.encode('latin-1')。decode('utf-8')。encode('ascii',errors='xmlcharrefreplace')。decode('ascii')
。