将#39改为正常角色

Vor*_*Vor 8 html python character-encoding

我在显示内容时遇到问题,我的程序:

#! /usr/bin/python

import urllib
import re

url = "http://yahoo.com"
pattern = '''<span class="medium item-label".*?>(.*)</span>'''

website = urllib.urlopen(url)
pageContent = website.read()
result = re.findall(pattern, pageContent)

for record in result:
    print record
Run Code Online (Sandbox Code Playgroud)

输出:

Masked teen killed by dad
First look in &#39;Hotel of Doom&#39;
Ex-NFL QB&#39;s sad condition
Reporter ignores warning
Romney&#39;s low bar for debates
Run Code Online (Sandbox Code Playgroud)

所以问题是我应该在代码中包含什么才能将#39变换为字符

unu*_*tbu 13

在Python2中:

In [16]: text = 'Ex-NFL QB&#39;s sad condition'

In [17]: import HTMLParser

In [18]: parser = HTMLParser.HTMLParser()

In [19]: parser.unescape(text)
Out[19]: u"Ex-NFL QB's sad condition"
Run Code Online (Sandbox Code Playgroud)

在Python3中:

import html.parser as htmlparser
parser = htmlparser.HTMLParser()
parser.unescape(text)
Run Code Online (Sandbox Code Playgroud)

  • `html.parser.HTMLParser.unescape` 已弃用,应使用 `html.unescape` 代替。阿布舍克的回答是最新的。 (2认同)

Abh*_*hek 9

Python 3的解决方案,

import html
html.unescape(text)
Run Code Online (Sandbox Code Playgroud)