python编码的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python编码的问题相关的知识,希望对你有一定的参考价值。
我用os.listdir()获取了一个文件夹的内容,但是直接输出这个list的话就会是乱码,如果用循环输出就是正常的中文。
那个[2:]是因为前两个是 $RECYCLE.BIN 和 360Rec
给python的编码跪了
print ot
测试了下上面这两条语句,中文命名的文件夹列表显示如下:
['\\xd2\\xf4\\xc0\\xd6', '\\xcd\\xbc\\xc6\\xac']
这不叫乱码,只是以utf-8编码表示中文字符串。你的本意是想要得到['abc', 'bcd', '音乐', '图片']这种形式的输出,但是实际显示却是utf-8编码。
假设我们创建一个列表 ot = ['abc', 'bcd', '音乐', '图片'],并且文件开头定义了以utf-8格式进行编码。那么在内存里列表对象ot存储的是'abc', 'bcd', '\\xd2\\xf4\\xc0\\xd6', '\\xcd\\xbc\\xc6\\xac'这四个值。
为什么英文字符还是英文,中文字符就变成“乱码”了呢?因为计算机不是人,它是看不懂'音乐'和'图片'这几个汉字字符的,它只认识字符的编码值。对于多种编码来说,键盘上那些英文字符编码值都是一样的。中文则不一样。
为什么打印字符串显示出了中文,打印列表的时候显示的却是utf-8编码?print 的作用是把计算机可理解的对象以人类可以理解的方式打印出来,具体显示结果跟你要打印的对象有关,打印的是字符串,显示的就是人类语言表示的字符串对象,打印的是列表,显示的就是列表对象本身,也即该列表里存储的值。
什么形式显示。追问
讲的非常好,基本懂了。如果我把中文打印出来,存储进字典中,还会是utf-8编码吗?
追答打印字符串不会改变原来的字符串对象,一个确定编码的字符串,在处理过程中如果不主动对它进行转码,它的编码是不会改变的。
追问噢,讲得很好,已经有点理解了
参考技术A python2默认编码是ascii,如果你在文件顶部添加# -*- coding: utf-8 -*-,会转成utf8,通过字符串前面添加u,如u“中国”,可以转成unicode.
python3默认unicode 参考技术B 你好:
编码的问题确实头疼;
我在博客园摘抄了一些编码问题;
这个问题主要是因为:
print 是将字符串转化为系统的编码输出。
而list存储的你设置的编码。追问
如何以正确的编码,存储为列表?
追答那你就得知道你的编码的格式;
进行先解码,再编码!
python抓网页的编码问题
小弟刚接触python,抓第一个网页就过不去编码这个坎`请高手赐教,代码如下:
#coding = gb2312
import urllib2
from BeautifulSoup import BeautifulSoup
outfile = open("lsxk.txt", "w")
for i in range(1,2): #第一页
url= "http://bbs.scu.edu.cn/wForum/disparticle.php?
boardName=SCUExpress&ID=1735295349&pos=-1&page=%d" % i
doc = urllib2.urlopen(url).read()
soup = BeautifulSoup(doc,fromEncoding="gb2312")
print >> outfile,doc #输出到文本
outfile.close()
抓到txt中的内容是中文,但使用beautifulSoup后就乱码了`
BS的文档说使用soup = BeautifulSoup(doc, fromEncoding="gb2312"),
还是不能正确编码.print出来报错是gb2312和utf-8不能编码网页中的某些字符.
单独使用编码也不能解决:
import codecs
print open("lsxk.txt").read().decode("utf-8")
可能说的不是很清楚`以上是我遇到的问题们,还请高手帮帮忙,不甚感谢!
import urllib2
from BeautifulSoup import BeautifulSoup
f = urllib.urlopen('http://www.baidu.com')
html=f.read()
f.close()
soup = BeautifulSoup()
soup.feed(html)
print soup 参考技术A BeautifulSoup() 不能直接 指定 编码
还有编码尽量 用GB18030 不要用GBK
以上是关于python编码的问题的主要内容,如果未能解决你的问题,请参考以下文章
原创python中文编码问题深入分析:python2.7文件读写中文编码问题