关于Python中输出中文的一点疑问

#encoding=gb2312
import urllib
import re

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

def getImg(html):
    reg = r‘<strong>(.*)</strong>‘
    imgre = re.compile(reg)
    imglist = re.findall(imgre, html)
    return imglist

html = getHtml(‘http://yjs.teacher.com.cn/dsjyss/jswk11104/info/kcjjx.htm‘)
imglist = getImg(html)print html #这样输出一堆Unicode码
print imglist[0]
#for img in imglist:
#   print img

以上是我学习Python爬虫的一个简单的例子,我修改网上流传的下载百度图片的例子,用来抓取一些网络课程的课程名称

但是我发现一个有意思的问题,如上图代码

如果直接是print正则之后的html则会得到

[‘\xe7\xbd\x91\xe7\xbb\x9c\xe6\x8a\x80\xe6\x9c\xaf\xe4\xb8\x8e\xe5\xa4\x9a\xe5\xaa\x92\xe4\xbd\x93\xe6\x8a\x80\xe6\x9c\xaf‘, ‘Network Technology and Multimedia  Technology‘, ‘1. \xe7\x9f\xa5\xe8\xaf\x86\xe4\xb8\x8e\xe6\x8a\x80\xe8\x83\xbd‘, ‘2. \xe8\xbf\x87\xe7\xa8\x8b\xe4\xb8\x8e\xe6\x96\xb9\xe6\xb3\x95‘, ‘3. \xe6\x83\x85\xe6\x84\x9f\xe6\x80\x81\xe5\xba\xa6\xe4\xb8\x8e\xe4\xbb\xb7\xe5\x80\xbc\xe8\xa7\x82‘, ‘\xe4\xb8\x93\xe9\xa2\x98\xe4\xb8\x80\xef\xbc\x9a\xe5\xa4\x9a\xe5\xaa\x92\xe4\xbd\x93\xe6\x8a\x80\xe6\x9c\xaf1‘, ‘\xe4\xb8\x93\xe9\xa2\x98\xe4\xba\x8c\xef\xbc\x9a\xe5\xa4\x9a\xe5\xaa\x92\xe4\xbd\x93\xe8\xaf\xbe\xe4\xbb\xb6\xe8\xae\xbe\xe8\xae\xa1‘, ‘\xe4\xb8\x93\xe9\xa2\x98\xe4\xb8\x89\xef\xbc\x9a\xe5\xa4\x9a\xe5\xaa\x92\xe4\xbd\x93\xe8\xaf\xbe\xe4\xbb\xb6\xe5\xbc\x80\xe5\x8f\x91‘, ‘\xe4\xb8\x93\xe9\xa2\x98\xe5\x9b\x9b\xef\xbc\x9a \xe7\xbd\x91\xe7\xbb\x9c\xe8\xaf\xbe\xe7\xa8\x8b\xe8\xae\xbe\xe8\xae\xa1‘, ‘\xe4\xb8\x93\xe9\xa2\x98\xe4\xba\x94\xef\xbc\x9a\xe7\xbd\x91\xe7\xbb\x9c\xe8\xaf\xbe\xe7\xa8\x8b\xe5\xbc\x80\xe5\x8f\x91‘, ‘\xe4\xb8\x93\xe9\xa2\x98\xe5\x85\xad\xef\xbc\x9a\xe5\xa4\x9a\xe5\xaa\x92\xe4\xbd\x93\xe6\x8a\x80\xe6\x9c\xaf2‘, ‘\xe4\xb8\x93\xe9\xa2\x98\xe4\xb8\x83\xef\xbc\x9a\xe6\xa0\xa1\xe5\x9b\xad\xe5\xb1\x80\xe5\x9f\x9f\xe7\xbd\x91\xe7\x9a\x84\xe6\x9e\x84\xe5\xbb\xba‘, ‘\xe4\xb8\x93\xe9\xa2\x98\xe5\x85\xab\xef\xbc\x9a\xe7\xbd\x91\xe7\xbb\x9c\xe6\x9c\x8d\xe5\x8a\xa1\xe5\x99\xa8\xe9\x85\x8d\xe7\xbd\xae\xe4\xb8\x8e\xe7\xae\xa1\xe7\x90\x86‘, ‘\xe4\xb8\x93\xe9\xa2\x98\xe4\xb9\x9d\xef\xbc\x9a\xe7\xbd\x91\xe7\xbb\x9c\xe8\xae\xbe\xe5\xa4\x87\xe4\xba\x92\xe8\xbf\x9e‘, ‘\xe4\xb8\x93\xe9\xa2\x98\xe5\x8d\x81\xef\xbc\x9a\xe7\xbd\x91\xe7\xbb\x9c\xe5\xae\x89\xe5\x85\xa8‘]

如果是用遍历的方法或者print imglist[0]则会输出中文

这可是困扰了我一天的问题,到现在都没有结果,这是为什么呢?

为什么直接打印html输出的不是汉子呢,真是奇怪啊

时间: 2024-12-16 13:39:52

关于Python中输出中文的一点疑问的相关文章

Python:print输出中文

python3 print输出unicode字符时出现以下错误: UnicodeEncodeError: 'gbk' codec can't encode character '\u30fb 解决方法: sys.stdout = io.TextIOWrapper(sys.stdout.buffer, errors = 'replace', line_buffering = True) Python:print输出中文

sae python中Mysql中文乱码的解决

一开始我用的是: db=MySQLdb.connect(db=sae.const.MYSQL_DB,user=sae.const.MYSQL_USER,passwd=sae.const.MYSQL_PASS,host=sae.const.MYSQL_HOST,port=int(sae.const.MYSQL_PORT)) 数据库编码与python代码的编码都已设为utf8,在PHPMyAdmin中添加中文记录,在网页查询显示中却显示乱码,我在网上各种搜索都找不到解决方法.最后终于发现在连接数据库

在Python中处理中文路径

最近在Windows下使用Python进行Swift API的开发,其中对象(相当于文件)上传和下载会涉及到中文路径,可是纠结了好长时间,总是提示路径不存在,后来经过多方查找资料和咨询,终于找到问题所在.对文件路径需要使用Unicode编码: local_path = unicode(local_path, 'utf8) file = open(local_path, 'rb') 文章出自:http://blog.csdn.net/twlkyao/article/details/26715443

python中处理中文

在python中进行输入输出中文或者添加中文注释,需要在伴释的后面添加中文编码的代码: 1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 class c: 4 name="zhangsan"; 5 age =11; 6 def sayHello(self): 7 print self.age; 8 print self.name; 9 myHello = c(); 10 myHello.sayHello();

Python中输出格式化的字符串

在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下: >>> 'Hello, %s' % 'world' 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.' 你可能猜到了,%运算符就是用来格式化字符串的.在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序

python中使用中文

今天试着爬淘宝,并在上面搜索麦田的守望者,在url链接中有一段search q=麦田的守望者,直接放在Python中,会出现错误,参考博客(http://www.cnblogs.com/rollenholt/archive/2011/08/01/2123889.html) 按着上面的方法需要加上编辑申明 # coding=gbk,什么就都解决了,然后又出现一个问题,爬下来的html似乎不全!

Python 中添加中文注释以及中文输出解释器报错的解决办法

终于知道如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明.把ChineseTest.py文件的编码重新改为ANSI,并加上编码声明. 在代码的第一行 或者 第二行添加指定文件的编码类型 #-*- coding:utf-8 -*-           //添加代码类型1 #coding=utf-8         //添加代码类型2 上面两种方法随便哪一种都可以,别忘记了前面的 # . 这样代码中就可以添加中文注释 和 中文输出了. 另外提醒一句:vim 查看文件的编码类型是在命令模

python中包含中文list输出乱码

先看代码: item = [['2015',u'中国'],['2013','nian份']] print item print item[0][1] 输出结果: 在此处有相关讨论 解决办法: python2中,list若包含中文,整体输出时是以十六进制输出的: 链接中的讨论提供的方法试过,没成功.看来python2中只能以for来单独输出了. 当然了python3应该是解决了此类问题的.

在Python中输出逗号分隔的方法有哪些

Python开发(http://www.maiziedu.com/course/python-px/)中如何把多个表达式用逗号隔开?之前讲解过如何使用print来打印表达式--不管是字符串还是其他类型进行自动转换后的字符串.使用print打印多个表达式,就能用逗号将它们隔开: >>> print "Age", 19 Age 19 可以看到,每个参数之间都插入了一个空格符. 注:print的参数并不能像我们预期那样构成一个元组: >>> 1, 2, 3