首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python append()删除utf-8编码?

Python append()删除utf-8编码?
EN

Stack Overflow用户
提问于 2016-05-06 04:51:03
回答 1查看 1.4K关注 0票数 0

**更新:我尝试将最终列表保存到csv文件中,发现一切正常。正如Alex H.在他的回答中提到的那样,打印列表(字符串)的结果并不总是很漂亮。

我是一个新手,刚刚开始使用python进行web数据分析。遇到这个问题很让人沮丧,我真心希望有人能帮助我解决这个问题!

我正在尝试使用从网站抓取的文本数据。下面是我的代码(请注意,我只是随机选择了一个网站来测试它的关于我们的信息)。我希望最终的ps列表只包含三个以utf-8编码的文本块。然而,当我打印每个单独编码的文本块时,结果看起来很好(所有的html格式都被删除了),但当我打印ps时,最终的附加列表html格式仍然存在。append()函数会删除编码结果吗?如果是这样,我可以做些什么来保留ps列表的编码?

代码语言:javascript
复制
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")
EN

回答 1

Stack Overflow用户

发布于 2016-05-06 06:38:49

这里没有真正的问题,只是不要期望在打印列表时看到漂亮的东西。你不应该为了任何实际的目的而打印这个列表,你可以通过单独处理这些项目来获得你想要的任何输出。列表有自己的字符串表示。这里是一个控制台会话,它可能会解释一点。

代码语言:javascript
复制
>>> 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37060026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档