python2和python3在处理字符串上的区别详解

 更新时间:2019年05月29日 15:20:27   作者:HF9  
这篇文章主要介绍了python2和python3在处理字符串上的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

python2和python3对于字符串的处理有很大的区别

熟悉了python2的写法用python3时真的会遇到很多问题啊……

区别

python2中有一种类型叫做unicode型,例

type(u"a") => str型
type("a".decode('utf8')) => unicode型

两者返回的类型都是unicode型

而在python3中,所有的字符串都是unicode,所以就不存在单独的unicode型,全部都是字符串型

type(u"a") => str型
type("a".decode('utf8')) => 报错,python3不能这样写

但是python3中多处一种字符串

type(b'132') => byte型

而在python2中这样写就会报错

所以显而易见,decode和encode的使用也会有很大的区别

python2中的decode是将str型转换为unicode型

python3中的decode是将byte型转换为str型

使用

在使用python3写爬虫时,有时候会遇到这样的错误

'gbk' codec can't encode character '\u30fb' in position 0: illegal multibyte sequence

遇到这样的错误就和上面的编码问题连系起来了

你会发现,明明自己设置的编码是utf8,怎么会报一个gbk的错误??

这个问题可能会在两个地方出现(输出时,写入文件时),其实这里设置的编码并没有问题,问题出在python3的字符串中,像上面说的,python3默认所有字符串都是unicode型,在面对字符串时,会首先按照unicode解析,自然会报错

那么,我们来转换一下编码(假设a是一个gbk编码的数据流)

"a".decode('gbk')

将字符串按照gbk规则解码

会发现依旧报错,明明已经改为gbk了啊……不着急,再进行一次

"a".decode('gbk').encode('utf8').decode('utf8')

为什么写的这么长……就像上面说的,decode是将byte型转为str型,而encode是将str型转换为byte型,所以再进行一次encode,decode就能够使得字符串转换编码格式

但是当你输出时,你会发现还是有问题

解决

我们回到开始

不输出我们想要的字符串,发现没有问题……问题出在哪?

没错,是print(),print在输出时会默认其中的字符时unicode编码的字符串,而我们输入了一个gbk编码的字符串,所以就会出错,所以,解决方法就是,不使用print……

但是print的使用有时候是不可避免的,所以在decode时加上一个ignore

"a".decode('gbk',errors='ignore')

此外,在打开或写入文件时遇到的话,就需要加上encoding参数

with open("1.txt",'r',encoding='utf8') as a:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 基于Python实现m3u8视频下载

    基于Python实现m3u8视频下载

    m3u8 是一种基于文本的媒体播放列表文件格式,通常用于指定流媒体播放器播放在线媒体流,本文将利用Python实现m3u8视频下载器,感兴趣的可以了解一下
    2023-05-05
  • FP-growth算法发现频繁项集——构建FP树

    FP-growth算法发现频繁项集——构建FP树

    常见的挖掘频繁项集算法有两类,一类是Apriori算法,另一类是FP-growth。Apriori通过不断的构造候选集、筛选候选集挖掘出频繁项集,需要多次扫描原始数据,当原始数据较大时,磁盘I/O次数太多,效率比较低下
    2021-06-06
  • 使用Python实现批量访问URL并解析XML响应功能

    使用Python实现批量访问URL并解析XML响应功能

    在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响应功能,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2025-01-01
  • python数据解析BeautifulSoup爬取三国演义章节示例

    python数据解析BeautifulSoup爬取三国演义章节示例

    这篇文章主要介绍了python数据解析BeautifulSoup爬取三国演义章节示例,文中附含详细示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Python基础-特殊方法整理详解

    Python基础-特殊方法整理详解

    python中特殊方法(魔术方法)是被python解释器调用的,我们自己不需要调用它们,我们统一使用内置函数来使用。本篇文章将对其详细介绍,感兴趣的小伙伴可以参考下面文章的具体内容
    2021-09-09
  • Python numpy 模块介绍

    Python numpy 模块介绍

    这篇文章主要介绍了Python numpy 模块,在motplotlib的学习过程中,我们使用最多的就是numpy模块。下面我们将使用numpy进行创建数组、切片、索引、广播等功能实操,需要的朋友可以参考一下
    2022-01-01
  • Python基于win32ui模块创建弹出式菜单示例

    Python基于win32ui模块创建弹出式菜单示例

    这篇文章主要介绍了Python基于win32ui模块创建弹出式菜单,结合实例形式分析了Python使用win32ui模块创建弹出式菜单的具体步骤与相关操作技巧,并附带说明了win32ui模块的安装命令,需要的朋友可以参考下
    2018-05-05
  • python csv实时一条一条插入且表头不重复问题

    python csv实时一条一条插入且表头不重复问题

    这篇文章主要介绍了python csv实时一条一条插入且表头不重复问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 关于PyCharm安装后修改路径名称使其可重新打开的问题

    关于PyCharm安装后修改路径名称使其可重新打开的问题

    这篇文章主要介绍了关于PyCharm安装后修改路径名称使其可重新打开的问题,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Python脚本实现音频和视频格式转换

    Python脚本实现音频和视频格式转换

    这篇文章主要为大家详细介绍了Python如何通过脚本实现音频和视频格式转换,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-03-03

最新评论