如何更改python数组的编码?

时间:2017-12-19 07:22:54

标签: python python-2.7 web-scraping character-encoding beautifulsoup

我使用以下代码从中文网站上刮取表格。它工作正常。但似乎我存储在列表中的内容没有正确显示。

import requests
from bs4 import BeautifulSoup
import pandas as pd

x = requests.get('http://www.sohu.com/a/79780904_126549')
bs = BeautifulSoup(x.text,'lxml')

clg_list = []

for tr in bs.find_all('tr'):
    tds = tr.find_all('td')
    for i in range(len(tds)):
       clg_list.append(tds[i].text)
       print(tds[i].text)

当我打印文本时,它会显示中文字符。但是当我打印出列表时,它会显示\ u4e00 \ u671f \ uff0834 \ u6240 \ uff09'。我不确定是否应该更改编码或其他错误。

1 个答案:

答案 0 :(得分:2)

在这种情况下没有错。

当你打印一个python列表时,python会在每个列表的元素上调用import driver.api._ 。在python2中,unicode字符串的repr显示组成字符串的字符的unicode代码点。

repr

但是,如果您>>> c = clg_list[0] >>> c # Ask the interpreter to display the repr of c u'\u201c985\u201d\u5de5\u7a0b\u5927\u5b66\u540d\u5355\uff08\u622a\u6b62\u52302011\u5e743\u670831\u65e5\uff09' 字符串,python会使用文本编码对unicode字符串进行编码(例如,utf-8),并且您的计算机会显示与编码匹配的字符。

print

请注意,在python3打印中,列表将显示您期望的中文字符,因为python3的unicode处理效果更好。