解码&符号哈希字符串(|xa)等
Decoding ampersand hash strings (|xa)etc
其他答案中的解决方案我试了都不行,我试了那些方法输出的都是同样的字符串。
我正在尝试使用 Python 2.7 进行网络抓取。我已经下载了网页,它有一些形式为 x
的字符,其中 120 似乎代表 ascii 代码。我尝试使用 HTMLParser()
和 decode()
方法,但似乎没有任何效果。
请注意,我从网页中获得的格式只是那些字符。
示例:
Blasterjaxx 
请指导我使用 Python 解码这些字符串。我已经阅读了其他答案,但这些解决方案似乎对我不起作用。
字符引用的正确格式是 &#nnnn;
,因此您的示例中缺少 ;
。您可以添加 ;
然后使用 HTMLParser.unescape() :
from HTMLParser import HTMLParser
import re
x ='Blasterjaxx '
x = re.sub(r'(&#[0-9]*)', r';', x)
print x
h = HTMLParser()
print h.unescape(x)
这给出了这个输出:
Blasterjaxx 
Blasterjaxx
根据您正在做的事情,您可能希望将该数据转换为有效的 HTML character references,以便您可以使用适当的 HTML 解析器在上下文中解析它。
但是,提取数字字符串并将它们自己转换为等效的 ASCII 字符非常容易。例如,
s ='Blasterjaxx '
print ''.join([chr(int(u)) for u in s.split('&#') if u])
输出
Blasterjaxx
if u
跳过我们得到的初始空字符串,因为 s
以拆分字符串 '&#'
开头。或者,我们可以通过切片来跳过它:
''.join([chr(int(u)) for u in s.split('&#')[1:]])
在Python3、使用html
模块:
>>> import html
>>> html.unescape('Blasterjaxx ')
'Blasterjaxx '
其他答案中的解决方案我试了都不行,我试了那些方法输出的都是同样的字符串。
我正在尝试使用 Python 2.7 进行网络抓取。我已经下载了网页,它有一些形式为 x
的字符,其中 120 似乎代表 ascii 代码。我尝试使用 HTMLParser()
和 decode()
方法,但似乎没有任何效果。
请注意,我从网页中获得的格式只是那些字符。
示例:
Blasterjaxx 
请指导我使用 Python 解码这些字符串。我已经阅读了其他答案,但这些解决方案似乎对我不起作用。
字符引用的正确格式是 &#nnnn;
,因此您的示例中缺少 ;
。您可以添加 ;
然后使用 HTMLParser.unescape() :
from HTMLParser import HTMLParser
import re
x ='Blasterjaxx '
x = re.sub(r'(&#[0-9]*)', r';', x)
print x
h = HTMLParser()
print h.unescape(x)
这给出了这个输出:
Blasterjaxx 
Blasterjaxx
根据您正在做的事情,您可能希望将该数据转换为有效的 HTML character references,以便您可以使用适当的 HTML 解析器在上下文中解析它。
但是,提取数字字符串并将它们自己转换为等效的 ASCII 字符非常容易。例如,
s ='Blasterjaxx '
print ''.join([chr(int(u)) for u in s.split('&#') if u])
输出
Blasterjaxx
if u
跳过我们得到的初始空字符串,因为 s
以拆分字符串 '&#'
开头。或者,我们可以通过切片来跳过它:
''.join([chr(int(u)) for u in s.split('&#')[1:]])
在Python3、使用html
模块:
>>> import html
>>> html.unescape('Blasterjaxx ')
'Blasterjaxx '