Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “如何替换”★✿•&引用;用他们的密码?_Python_Encoding_Character Encoding_Html Parsing - Fatal编程技术网

Python “如何替换”★✿•&引用;用他们的密码?

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(["✿","

我正在python上开发一些web解析器,现在使用了一些特殊符号,如
★ ✿ •
和其他,有时我用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)

如果您需要处理不是来自上述转换的输入,您可能还需要处理十六进制数,它看起来像
&#xZZZ
其中
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')