1.基本概念

字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等

字符集(Character set)是多个字符的集合

字符集包括:ASCII字符集、GB2312字符集、GB18030字符集、Unicode字符集等

ASCII编码是1个字节,而Unicode编码通常是2个字节。

UTF-8是Unicode的实现方式之一,UTF-8是它是一种变长的编码方式,可以是1,2,3个字节

2.Python3中的字符串

Python3中两种字符串类型

 1.str:unicode的呈现形式
 2.bytes: 字节类型,互联网上的数据都是以二进制的方式(字节类型)传输的
使用方法:
 1.str使用encode方法转化为bytes
 2.bytes通过decode转化为str
注意:编码方式与解码方式必须一样,否则就会出现乱码

3.Python2中的字符串

Python2中字符串有两种类型

 1.unicode类型
 2.字节类型

在Python2中,字符串无法完全地支持国际字符集和Unicode编码。为了解决这种限制,Python2对Unicode数据使用了单独的字符串类型。要输入Unicode字符串,要在第一个引号前加上'u'。

Python2中普通字符串实际上就是已经编码(非Unicode)的字节字符串

3.1.python2中的字节类型字符串
python2 中定义字符串的时候,会自动将字符串转换为合适编码的字节字符串,比如中文:自动转换为utf-8编码的字节字符串

举个例子(linux终端,默认终端的编码utf-8):

>>> a = "你好"  #如此定义字符串的时候,其为字节类型
>>> a
'\xc4\xe3\xba\xc3'
>>> type(a)
<type 'str'>

 上面的这种定义方式和在字符串前面加上b的效果一样,可以对其解码,转化为str类型

>>> c =b"你好"
>>> c
'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> type(a)
<type 'str'>
>>> c.decode("utf-8")
u'\u4f60\u597d'

 3.2 Python2中的Unicode类型 
如果需要定义Unicode字符串,即非字节类型的字符串的时候需要在前面加上‘u’

>>> e = u"你好"
>>> e
u'\u4f60\u597d'
>>> type(e)
<type 'unicode'>
>>> e.encode('utf-8')
'\xe4\xbd\xa0\xe5\xa5\xbd'

3.3 python2中字节类型和uicode类型的转化
  1.字节类型通过decode转化为Unicode类型
  2.Unicode类型通过很encode方法转化为字节类型
  3.方法的使用和Python3相同,但是在方法中默认的编码解码方式为ASCII,对中文需要手动指定为utf-8

4.文件编码
  在Python中保存字符串到文件中,文件编码取决于第一次写入的字符串编码,如果后续写入的字符串编码和文件编码不一致时,则出现乱码(Python写入文件没有Unicode编码的文件编码)。
  4.1 Python3只要是写入Unicode字符串,都按‘w’模式写入,除非是 非Unicode(gbk、utf8、jpg、mp4等非Unicode数据),按 "wb" 写入。
  4.2Python2只要是写入字符串,都按 "w" 模式写入,除非是 图片、音频、视频这种非字符串数据,按 "wb" 模式写入。

转载于:https://www.cnblogs.com/litao2011/p/9534867.html

爬虫中的关于字符串的一些理解相关推荐

  1. 为什么阿里巴巴不建议在for循环中使用+进行字符串拼接

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 字符串,是Java中最常用的一个数据类型了.关于字符串的知识,作者 ...

  2. 为什么阿里巴巴不建议在for循环中使用+进行字符串拼接?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 本文,也是对于Java中字符串相关知识的一个补充,主要来介绍一下字 ...

  3. python3中编解码、进制、字节、bytes及爬虫中经常遇到的编码问题的总结

    摘要 内容可能有些繁杂,我尽量排版清晰,描述通俗易懂,不说为了别人,后期我自己也要看的. 内容是我查阅诸多资料汇总的,如有不对之处,欢迎告知. 侵删 首先说一下:ASCII Unicode UTF-8 ...

  4. 浅谈网络爬虫中广度优先算法和代码实现

    前几天给大家分享了网络爬虫中深度优先算法的介绍及其代码实现过程,没来得及上车的小伙伴们可以戳这篇文章--浅谈网络爬虫中深度优先算法和简单代码实现.今天小编给大家分享网络爬虫中广度优先算法的介绍及其代码 ...

  5. python中abc属于字符串吗_Python基础学习:字符串

    Python 版本: 3.6.2 操作系统: Windows 作者: SmallWZQ 在 Python 中,字符串也是一种数据类型.相比其它数据类型,字符串算是比较复杂的.为 何呢?因为字符串不仅包 ...

  6. java两字符串是否相等_Java与JavaScript中判断两字符串是否相等的区别

    JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...

  7. python队列来做什么_python分布式爬虫中的消息队列是什么?

    当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...

  8. nodejs开发 过程中express路由与中间件的理解 - pyj063 - 博客园

    nodejs开发 过程中express路由与中间件的理解 nodejs开发 express路由与中间件 路由 通常HTTP URL的格式是这样的: http://host[:port][path] h ...

  9. python 消息队列 get是从队首还是队尾取东西_python分布式爬虫中消息队列知识点详解...

    当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...

最新文章

  1. 中怎么均化走线_PCB板上多长的走线才是传输线?答案是……
  2. 下拉默认选择_在Excel中制作二级联动下拉菜单,太有用了
  3. adb shell 命令之----pm
  4. 闲谈: 测试报告的插入图片
  5. Hp Dell服务器硬件监控
  6. 改善程序与设计的55个具体做法 day5
  7. 利用简单的磁盘映射,Samba帮助网站与关关采集器分离,实现杰奇小说远程采集,弊端很多,不建议使用,建议直接利用桌面安装
  8. STM32L系列与普通STM32F系列的比较
  9. TIA安装GSD文件
  10. 个人信息安全规范----3、个人信息的收集、存储、使用
  11. 【Windows】实现微信双开或多开
  12. Consul 集群单节点与多节点
  13. 液晶显示器 选购攻略
  14. VisionPro 报错解决方法
  15. Qt进阶--Item Views详解(基础,原创,超级详细)
  16. 《区块链技术与应用》学习笔记10——ETH数据结构
  17. 解析xml文件的几种方法和原理
  18. 小蓝本 第一本 《因式分解技巧》 第七章 综合运用 笔记 (第七天)
  19. 【机器学习笔记14】softmax多分类模型【下篇】从零开始自己实现softmax多分类器(含具体代码与示例数据集)
  20. 【Oracle】record varray (associative array 关联数组) table (nested table type 嵌套表类型)和%type、%rowtype的使用详解

热门文章

  1. 华为把服务器虚拟底层锁了,华为全面关闭解码锁服务:马上升级到很吓人的技术!...
  2. CCNP-第十一篇-BGP(三)(精髓篇)
  3. 【CodeForces - 460C】Present(二分+树状数组)
  4. 【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐下象棋(记忆化搜索dp,dfs)
  5. 【qduoj】最长公共子串
  6. jsp mysql 推荐算法_基于jsp+mysql+Spring+mybatis的SSM协同过滤音乐推荐管理系统(个性化推荐)...
  7. html手机网站font-size:16em,px、em、rem
  8. 三星电视出现服务器未响应,三星电视遥控器失灵怎么办
  9. html5触边反弹,第四章课件.PPT_数字电子技术基础(ppt课件)_ppt_大学课件预览_高等教育资讯网...
  10. c语言折半查找输出坐标,数据结构(C语言版)——有序表查找(折半查找)(代码版)...