python codecs_python中转换模块codecs的讲解(附示例)

python codecs_python中转换模块codecs的讲解(附示例)本篇文章给大家带来的内容是关于 python 中转换模块 codecs 的讲解 附示例 有一定的参考价值 有需要的朋友可以参考一下 希望对你有所帮助 0 编码编码转换时 通常需要以 unicode 作为中间编码 即先将其他编码的字符串解码 decode 成 unicode 再从 unicode 编码 encode 成另一种编码 str1 decode gb2312 将 gb2312 编码的字符串转换成 u

本篇文章给大家带来的内容是关于python中转换模块codecs的讲解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

0、编码

编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。str1.decode(‘gb2312’) #将gb2312编码的字符串转换成unicode编码

str2.encode(‘gb2312’) #将unicode编码的字符串转换成gb2312编码

注意事项:

s=‘中文’ 如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。这种情况下,要进行编码转换,都需要先用decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。

在没有指定特定的编码方式时,都是使用的系统默认编码创建的代码文件。

如果字符串是这样定义: s=u’中文’ 则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。只需要直接使用encode方法将其转换成指定编码即可

如果一个字符串已经是unicode了,再进行解码则将出错,因此通常要对其编码方式是否为unicode进行判断isinstance(s, unicode) #用来判断是否为unicode

1、查看编码方式

(1)对于我们经常使用的记事本,“文件” -> “另存为”,可查看到当前的编码方式。

(2)用notepad++打开,点击“菜单栏” -> “格式”可以查看到。

(3)UltraEdit:

不同编码的文本,是根据文本的前两个字节来定义其编码格式的,定义如下:

ANSI:        无格式定义;

Unicode:       前两个字节为FFFE;

Unicode big endian: 前两字节为FEFF;

UTF-8:        前两字节为EFBB;

这样通过前面两个字节就可以判定出文件的具体格式了。

2、python编码

当python要做编码转换的时候,会借助于内部的编码,转换过程是这样的:

原有编码 -> 内部编码 -> 目的编码

python的内部是使用unicode来处理的,但是unicode的使用需要考虑的是它的编码格式有两种,一是UCS-2,它一共有65536个码位,另一种是UCS-4,它有g个码位。

判断安装的python是用什么编码方式:import sys

print(sys.maxunicode)

如果输出的值为65535,那么就是UCS-2,如果输出是就是UCS-4编码。

转换成内部码:c = “风卷残云”

print(type(c))

c = bytes(c,encoding=’utf-8′)

print(type(c))

print(c)

b = codecs.decode(c, “utf-8”) #与c.decode()等效

print(type(b))

print(b)

print(c.decode())

输出:

b’\xe9\xa3\x8e\xe5\x8d\xb7\xe6\xae\x8b\xe4\xba\x91′

风卷残云

风卷残云

3、codecs模块

codecs专门用作编码转换。通过它的接口是可以扩展到其他关于代码方面的转换。

在python3.x中可以直接将bytes类型的数据转换成其他编码格式,而不用手动先转成unicode。import codecs

a = “我爱你”

# 创建utf-8编码器

look = codecs.lookup(‘utf-8’)

type(a)

a = bytes(a,encoding=’utf-8′)

b = look.decode(a)

print(b)

输出:(‘我爱你’, 9)

返回的元组中b[0]是数据,b[1]是长度。

用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicodef = codecs.open(filepath, ‘r’, ‘utf8’)

读取方式有很多种,这里的f是可以用for循环遍历的,当然也可以直接用readline或者readlines函数方法来读取。#for i in f:

# print(i)

#f.readline()

#f.read()

#f.readlines()

以上就是python中转换模块codecs的讲解(附示例)的详细内容,更多请关注php中文网其它相关文章!

article_wechat2021.jpg?1111

本文转载于:CSDN,如有侵犯,请联系删除

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233499.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • httprunner(11)运行测试报告「建议收藏」

    httprunner(11)运行测试报告「建议收藏」前言受益于pytest的集成,HttpRunnerv3.x可以使用pytest所有插件,包括pytest-html和allure-pytest,也可以实现这2种方式的报告内置html报告pyt

    2022年8月6日
    3
  • 解决docker下载镜像速度过慢_docker image是什么

    解决docker下载镜像速度过慢_docker image是什么前言上一篇讲到pull镜像,但是pull镜像的时候下拉的速度实在感人,有什么解决办法吗?我们只需将docker镜像源修改为国内的将docker镜像源修改为国内的:在/etc/docker/d

    2022年7月29日
    15
  • php将字符串内的指定字符全部替换,php中如何替换字符串中的某个字符[通俗易懂]

    php将字符串内的指定字符全部替换,php中如何替换字符串中的某个字符[通俗易懂]在PHP中,可以使用strtr()函数实现字符串替换。首先我们简单了解下strtr()函数的定义及语法。语法:stringstrtr(string$str,string$from,string$to)第一个参数表示待转换的字符串。第二个参数表示字符串中与将要被转换的目的字符to相对应的源字符。第三个参数表示字符串中与将要被转换的字符from相对应的目的字符。实例:…

    2022年5月23日
    36
  • 微信自动发送消息

    微信自动发送消息前提:今天加入微信辅助大军,奈何要一直去群里发广告,又懒又烦!!!于是乎,想到能不能自动去打广告~可以的~哈哈方案:最近在看api文档,就最先想到能不能java模拟发送信息,但是又没头绪(放弃)然后百度了相关信息,得出①脚本精灵录制(直接趴,这不是自己编程该有的风格)②微信网页版(js脚本)大致思路:1、遍历好友列表(避免发错

    2022年6月4日
    47
  • 合格的程序员的基本素质

    中国有很多小朋友,他们18,9岁或21,2岁,通过自学也写了不少代码,他们有的代码写的很漂亮,一些技术细节相当出众,也很有钻研精神,但是他们被一些错误的认识和观点左右,缺乏对系统,对程序的整体理解能力

    2021年12月21日
    52
  • idea2021.4.14激活码永久_通用破解码「建议收藏」

    idea2021.4.14激活码永久_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    86

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号