**更新:我尝试将最终列表保存到csv文件中,看到一切看起来都很好。正如Alex H.在他的回答中提到的那样,列表(字符串)的打印结果看起来并不总是很漂亮。
我刚刚开始使用python进行网络数据分析。遇到这个问题很令人沮丧,我希望有人可以帮助我!
我正在尝试使用网站上的文本数据。下面是我的代码(请注意我只是随机选择了一个网站来测试其关于我们的信息)。我希望最终的ps列表只包含三个编码为utf-8的文本块。但是,当我打印每个单独编码的文本块时,结果看起来很好(所有html格式都被删除)但是当我打印ps时,最后的附加列表,html格式仍然存在。 append()函数是否删除编码结果?如果是这样,我该怎么做才能保留ps列表的编码?
import urllib2
def download(url, user_agent='wswp', num_retries=2):
print 'downloading: ', url
headers={'User-agent': user_agent}
request=urllib2.Request(url, headers=headers)
opener=urllib2.build_opener()
try:
html=opener.open(request).read()
except urllib2.URLError as e:
print 'Download error: ', e.reason
html=None
if num_retries>0:
if hasattr(e, 'code') and 500<=e.code<600:
return download(url, user_agent, num_retries-1)
return html
url='http://www.piqproducts.com/pages/who-we-are'
html=download(url)
from bs4 import BeautifulSoup
soup=BeautifulSoup(html, 'html.parser')
ps = []
for p in soup.findAll('p'):
x=p.text.encode("utf-8")
print x
ps.append(x)
print ps
for p in soup.findAll('p'):
print p.text.encode("utf-8")
答案 0 :(得分:0)
这里没有真正的问题,只是不要指望在打印列表时看起来很漂亮。无论如何,您不需要为任何实际目的打印列表,您可以通过单独处理项目获得所需的任何输出。列表有自己的字符串表示形式。这是一个可以解释一下的控制台会话。
>>> ps = ['a', 'b', 'ç']
>>> print ps
['a', 'b', '\xc3\xa7']
>>> for p in ps: print p
...
a
b
ç
>>> print ps[2]
ç
>>> print repr(ps[2])
'\xc3\xa7'
>>> repr(ps) == str(ps)
True