python学习——基础(二)

编码(encode):unicode转化为str类型

解码(decode):将str类型转化为unicode

在python脚本中添加如下这行:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

脚本按所设置的编码类型进行保存和读取;

注:# -*- coding: utf-8 -*- 必须放在第一行或者第二行;

# /usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = ‘syc‘

print ‘中文‘.encode(‘utf-8‘)

结果:

Traceback (most recent call last):
  File "F:/hz_viking/PycharmProjects/django_demo/WebBase/WebBase/unicodePy.py", line 6, in <module>
    print ‘中文‘.encode(‘utf-8‘)
UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe4 in position 0: ordinal not in range(128)

原因:‘中文‘是str类型的;当进行编码的时候,python 就会使用 sys.defaultencoding 指明的方式来解码,然后再进行编码;sys.defaultencoding默认是 ascii编码;所以就会出现ordinal not in range(128);

解决办法:

1.

# /usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = ‘syc‘

print ‘中文‘.decode(‘utf-8‘).encode(‘utf-8‘)

先进行utf-8解码成unicode;然后再进行编码;

2.修改defaultencoding值

# /usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = ‘syc‘

import sys
reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入
sys.setdefaultencoding(‘utf-8‘)

print ‘中文‘.encode(‘utf-8‘)

# -*- coding: utf-8 -*-

sys.setdefaultencoding(‘utf-8‘) 
是两个不同的概念。
第一种:是指定当前程序文件的编码方式。即编译器在解析code是认为code是哪种编码方式。如果不像第一种那样指定,我们的程序中是不能以中文声明字符串的。
第二种:是指定了python的unicode类型使用何种编码来存储unicode字符串。如果不声明,默认使用ascii。

总结:在编码转换时首先要将该数据以文件定义的编码格式换成unicode码,再将这个unicode按制定的编码进行编码;

时间: 2024-08-09 00:37:38

python学习——基础(二)的相关文章

python学习(二)百度爬虫0.1

参照着网上的爬虫案例(点我),先做了一个demo,基本的爬虫项目创建,以及数据抽取,数据分析,数据保存等等过程基本上有所掌握. 我的需求是需要检索指定的百度贴吧,根据指定的关键字库,搜索出含有关键字的链接,并抽取出来,用于后续告警. 因此,基于需求,分如下步骤: 第一:基于Scrapy创建爬虫项目: 第二:新建TieBaSpider爬虫: 第三:新建外部关键字库dictionary.txt文件,贴吧地址配置url.txt文件: 第一步参考晚上案例. 从第二步开始,编写爬虫,同时创建实例对象以及创

Python学习基础篇第一篇——快速入门(适合初学者)

一.Python学习基础篇第一篇--(快速入门) 建议从Python2.7开始学习,Python2.7可以支持扩展大量的第三方类库,是目前比较成熟的版本 编写代码的软件推荐将python自带的IDLE和PyCharm集成IDE结合起来使用 1.1 Python命令行 Python命令行将以 >>> 开始,比如 >>>print 'Hello World!' 对于验证简单的命令可以在python自带的IDLE中完成  1.2 在Python自带的IDLE写一段小程序 在所

Python学习(二):入门篇:python中流程控制与函数编写

python中流程控制与函数编写 Last Eidt 2014/5/2 转载请注明出处http://blog.csdn.net/jxlijunhao 一,流程控制 1)布尔逻辑 Python中利用True来表示逻辑真,False来逻辑假 not :非 and:与 or   :或 ==  :逻辑等 >>> False==True False >>> False==False True >>> not False True >>> Fal

[Python学习] 专题二.条件语句和循环语句的基础知识

        前面讲述了"专题一.函数的基础知识",而这篇文章讲述的Python的条件语句和循环语句的基础知识.主要内容包括: 1.条件语句:包括单分支.双分支和多分支语句,if-elif-else 2.循环语句:while的使用及简单网络刷博器爬虫 3.循环语句:for的使用及遍历列表.元组.文件和字符串 前言: 语句块         在讲诉条件语句.循环语句和其他语句之前,先来补充语句块知识.(前面讲函数时已经用到过) 语句块并非一种语句,它是在条件为真(条件语句)时执行或执行

Python学习笔记&lt;二&gt;:列表、元组、字典

1 列表和元组 可以将列表和元组当成普通的"数组",它能保存任意数量任意类型的Python 对象.和数组一样,通过从0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象. 列表和元组有几处重要的区别.列表元素用中括号( [ ])包裹,元素的个数及元素的值可以改变.元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以).元组可以看成是只读的列表.通过切片运算( [ ] 和 [ : ] )可以得到子集,这一点与字符串的使用方法一样. 举例如下: >>>

Python学习(二) 登陆接口

浅谈Python学习的第一个小程序,用户登陆接口的开发 代码已实现功能: 1.用户登陆平台需要验证用户名和密码信息是否正确 2.允许用户尝试登陆三次,三次后强制退出登陆端. 3.同一账户连续登陆三次失败写入黑名单.管理员手动解黑后可正常登陆. 待实现功能: 1.实现黑名单用户30分钟自动解黑 2.调用DB用户数据,当前使用的文本列表 3.实现用户登陆验证码功能 4.暂时就想到这些没实现的功能,以后再补充,hehe 编写逻辑: 1.读取用户列表和黑名单列表 2.临时用户变量,记录用户登陆的临时元组

Python学习(二十三)—— 前端基础之jQuery

转载自https://q1mi.github.io/Blog/2017/07/10/about_jQuery/ 一.jQuery入门 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Ajax交互,能够极大地简化JavaScript编程.它的宗旨就是:"Write less, do more." 二.jQuery的优势 一款轻量级的JS框架.jQuery核心js文件才几

Python学习(二)——Python基础

基础 1.文件后缀名: 后缀名必须是.py,否则导入模块时会出错 2.执行方式: python解释器 .py文件路径 python 进入解释器 实时输入并获取执行结果 3.解释器路径 #!/usr/bin/env python →即文件头部的声明(适用于在Linux中指定解释器路径) 在windows系统直接写: 在Linux系统中: 文件名:./a.py 文件内部:#!/usr/bin/env python 4.编码 ascii:8位=1字节(py2默认解释器编码) unicode:32位=4

Python学习—基础篇之基本数据类型(二)

Python中重要的数据结构 1.列表 2.字典 3.元组 4.集合 列表 continue...... h3 { background-color: #009ACD; color: #FFFFFF; font-family: comic sans ms, "微软雅黑", "宋体", "黑体", Arial; font-size: 15px; font-weight: bold; height: 24px; margin: 12px 0 !imp