解决python2中unicode()函数在python3中报错的问题

 更新时间:2021年05月12日 14:37:09   作者:哦摩西罗伊  
这篇文章主要介绍了在python2中unicode()函数在python3中报错的解决方案,希望给大家做个参考,下次出现这个问题的时候,也知道如何应对

python2中的unicode()函数在python3中会报错:

NameError: name 'unicode' is not defined

There is no such name in Python 3, no. You are trying to run Python 2 code in Python 3. In Python 3, unicode has been renamed to str.

翻译过来就是:Python 3中没有这样的名字,没有。 您正在尝试在Python 3中运行Python 2代码。在Python 3中,unicode已重命名为str。

函数转换:unicode()到 str()为:

//python2:
unicode(nn,'utf-8')
//python3:
str(nn)

补充:根本解决Python2中unicode编码问题

Python2中编码问题

因为计算机只识别01这要的二进制,所以在计算机存储我们的文件时,要使用二进制数来表示。所以编码就是哪个二进制数表示哪个字符:

编码原由系统编码、文件编码与python系统编码Python字符编码python中的字典、数组转字符串中的中文编码

编码原由

ASCII编码

最早出现的是ASCII码,使用8位二进制数组合表示128种字符。因为ASCII编码是美国人发明的,当初没考虑给别的国家用,所以,它仅仅表示了所有美式英语的语言字符。但是没有使用完。

ISO 8859-1/windows-1252

128位字符满足了美国人的需求,但是随之欧洲人加入互联网,为了满足欧洲人的需求,8位二进制后面还有128位。这一段编码我们称之扩展字符集,即ISO 8859-1编码标准,后来欧洲的需求变更,即规定了windows-1252代替了ISO 8859-1

GB2312

然后当我国加入后,8位二进制(即一个字节)用完了,于是我们保留ASCII编码即前128位,后面的全部删除。因为我国得语言博大精深,所以需要2个字节,即16位才能满足我们得需求,所以当计算机遇到大于127的字节时,就一次性读取两个字节,将他解码成汉字。即GB2312编码

GBK

相当于GB2312的改进版,增添了中文字符。但还是2个字节表示汉字

GB18030

为了满足日韩和我国的少数民族的需求,对GBK的改进,使用变长编码,要么使用两个字节,要么使用四个字节。

Unicode

虽然每种编码都兼容ASCII编码,但是各个国家是不兼容的。于是出现了Unicode,它将所有的编码进行了统一。它不能算是一种具体的编码标准,只是将全世界的字符进行了编号,并没有指定他们具体在计算机种以什么样的形式存储。

它的具体实现有UTF-8,UTF-16,UTF-32等。

系统编码、文件编码与python系统编码

在linux中获取系统编码结果:

这里写图片描述

Windows系统的编码,代码页936表示GBK编码

这里写图片描述

可以看到linux系统默认使用UTF-8编码,windows默认使用GBK编码。Linux环境下,文件默认使用UTF-8编码。当然你也可以指定文件编码方式。

Python解释器内部默认使用的ASCII编码方式去解读python源文件。

这里写图片描述

所以当文件内存在非ASCII字符时,python解释器无 法识别,就会出现编码错误。

这里写图片描述

So,这个时候需要告诉python解释器用utf-8去解读python源文件

这里写图片描述

这里写图片描述

Python字符编码

Python2中有两类字符串,分别是str与unicode。这两类字符串都派生自抽象类basestring。 Str即普通字符串类型

这里写图片描述

在字符串前加上u即unicode编码

这里写图片描述

在代码中通常用到的是unicode,文件保存的是utf-8编码。Unicode编码是固定2个字节代表一个字符。Utf-8是对英文只用一个字节,对中文是3个字节。所以unicode运行效率高,utf-8运行效率相比要低,但是空间存储要小。

这里写图片描述

Python中str与unicode转换

Unicode转str

这里写图片描述

str转unicode

这里写图片描述

其函数中参数UTF-8是,以utf-8编码对unicode对象解码,或编码。

python中的字典、数组转字符串中的中文编码

当字典中的中文字符是unicode类型时

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

decode(“unicode-escape”)相当是反向编码.然后再进行utf-8编码即可

当字典中的字符串是string类型时

name = {"name": "中国"}
name = str(name)
print name.decode("string-escape")

这里写图片描述

当数组进行字符串化时

这里写图片描述

最后总结

不管是数组还是字典,在进行字符串转换是,即是又一次编码,所以,对于本身还有的中文字符串又一次编码,所以要进行一次反编码,才能看到原有的编码。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • python 获取文件列表(或是目录例表)

    python 获取文件列表(或是目录例表)

    在python的应用过程中,经常会用到获取文件列表的方法,常规的做法是这样的
    2009-03-03
  • Pandas实现在线文件和剪贴板数据读取详解

    Pandas实现在线文件和剪贴板数据读取详解

    这篇文章主要为大家介绍的是Pandas两种少用的读取文件方式:读取在线文件的数据和读取剪贴板的数据,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-06-06
  • Python进阶学习之特殊方法实例详析

    Python进阶学习之特殊方法实例详析

    一般说来,特殊的方法都被用来模仿某个行为。下面这篇文章主要给大家介绍了关于Python进阶学习之特殊方法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起看看吧。
    2017-12-12
  • Python之requests的使用(二)

    Python之requests的使用(二)

    上一篇我们说了requests的简单用法,知道了如何发送请求,今天我们更深层次的来学习requests。我们看看高级一点的操作,比如讲文件上传,cookies设置,代理设置之类的。感兴趣的同学可以参考阅读
    2023-04-04
  • Python3 Loguru输出日志工具的使用

    Python3 Loguru输出日志工具的使用

    使用 Python 来写程序或者脚本的话,常常遇到的问题就是需要对日志进行删除。一方面可以帮助我们在程序出问题的时候排除问题,二来可以帮助我们记录需要关注的信息,这篇文章主要介绍了Python3 Loguru 相见恨晚的输出日志工具,需要的朋友可以参考下
    2022-05-05
  • Python list操作用法总结

    Python list操作用法总结

    这篇文章主要介绍了Python list操作用法,以实例形式较为详细的总结分析了Python中list的各种常见函数的功能与使用方法,需要的朋友可以参考下
    2015-11-11
  • python爬虫之爬取谷歌趋势数据

    python爬虫之爬取谷歌趋势数据

    这篇文章主要介绍了python爬虫之爬取谷歌趋势数据,文中有非常详细的代码示例,对正在学习python爬虫的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • python监控进程脚本

    python监控进程脚本

    这篇文章主要为大家详细介绍了python监控进程脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 学习python处理python编码问题

    学习python处理python编码问题

    概括从python开始就处理unicode字符,python源文件的编码与解码,我们写的python程序从产生到执行的过程如下
    2011-03-03
  • Python中很常用的函数map()用法实例

    Python中很常用的函数map()用法实例

    这篇文章主要给大家介绍了关于Python中很常用的函数map()用法的相关资料,map()函数是Python的内置函数,会根据提供的函数参数,对传入的序列数据进行映射,需要的朋友可以参考下
    2023-10-10

最新评论