python中codecs模块_python自然语言编码转换模块codecs介绍

2023-11-05

python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理。

有一点需要清楚的是,当python要做编码转换的时候,会借助于内部的编码,转换过程是这样的:原有编码 -> 内部编码 -> 目的编码

python的内部是使用unicode来处理的,但是unicode的使用需要考虑的是它的编码格式有两种,一是UCS-2,它一共有65536个码位,另一种是UCS-4,它有2147483648g个码位。对于这两种格式,python都是支持的,这个是在编译时通过--enable-unicode=ucs2或--enable-unicode=ucs4来指定的。那么我们自己默认安装的python有的什么编码怎么来确定呢?有一个办法,就是通过sys.maxunicode的值来判断:

import sys

print sys.maxunicode

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

我们要认识到一点:当一个字符串转换为内部编码后,它就不是str类型了!它是unicode类型:a = "风卷残云"

print type(a)

b = a.unicode(a, "gb2312")

print type(b)

输出:

这个时候b可以方便的任意转换为其他编码,比如转换为utf-8:

c = b.encode("utf-8")

print c

c输出的东西看起来是乱码,那就对了,因为是utf-8的字符串。

好了,该说说codecs模块了,它和我上面说的概念是密切相关的。codecs专门用作编码转换,当然,其实通过它的接口是可以扩展到其他关于代码方面的转换的,这个东西这里不涉及。#-*- encoding: gb2312 -*-

import codecs, sys

print '-'*60

# 创建gb2312编码器

look = codecs.lookup("gb2312")

# 创建utf-8编码器

look2 = codecs.lookup("utf-8")

a = "我爱北京天安门"

print len(a), a

# 把a编码为内部的unicode, 但为什么方法名为decode呢,我的理解是把gb2312的字符串解码为unicode

b = look.decode(a)

# 返回的b[0]是数据,b[1]是长度,这个时候的类型是unicode了

print b[1], b[0], type(b[0])

# 把内部编码的unicode转换为gb2312编码的字符串,encode方法会返回一个字符串类型

b2 = look.encode(b[0])

# 发现不一样的地方了吧?转换回来之后,字符串长度由14变为了7! 现在的返回的长度才是真正的字数,原来的是字节数

print b2[1], b2[0], type(b2[0])

# 虽然上面返回了字数,但并不意味着用len求b2[0]的长度就是7了,仍然还是14,仅仅是codecs.encode会统计字数

print len(b2[0])

上面的代码就是codecs的使用,是最常见的用法。另外还有一个问题就是,如果我们处理的文件里的字符编码是其他类型的呢?这个读取进行做处理也需要特殊的处理的。codecs也提供了方法.#-*- encoding: gb2312 -*-

import codecs, sys

# 用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode

bfile = codecs.open("dddd.txt", 'r', "big5")

#bfile = open("dddd.txt", 'r')

ss = bfile.read()

bfile.close()

# 输出,这个时候看到的就是转换后的结果。如果使用语言内建的open函数来打开文件,这里看到的必定是乱码

print ss, type(ss)

上面这个处理big5的,可以去找段big5编码的文件试试。

python文件写入实例分析

本文实例讲述了python文件写入的用法。分享给大家供大家参考。具体分析如下:Python中wirte()方法把字符串写入文件,writelines()方法可以把列表中存储的

python smtplib模块发送SSL/TLS安全邮件实例

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。smtp协议的基本命令包括:HELO向服务器标识用户身份MAIL初始化邮件

Python字符串和文件操作常用函数分析

本文实例分析了Python字符串和文件操作常用函数。分享给大家供大家参考。具体如下:#-*-coding:UTF-8-*-'''Createdon2010-12-27@author:sumory'''importitertoolsdefa_contains

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中codecs模块_python自然语言编码转换模块codecs介绍 的相关文章

  • mysql5.7.13+VS3013 源代码阅读调试

    之前写Java 对C make cmake都不是很熟 所以参考了以下这些前辈写的博客 最后成功搭建了mysql5 7 13 VS3013调试环境 自己总结了需要需要注意的几点 Windows VS2012环境下编译调试MySQL源码 一 W
  • SQLServer如果指定列列值相同则用逗号拼接其他指定列数据 stuff函数+for xml path

    for xml path 就是将 sql 查询出来的内容以XML的格式显示出来 Stuff 查询字符串 开始位置 数字 长度 数字 需插入的字符串 示例 55替换abcd123字符串中的a 示例 55替换abcd123字符串中的abcd 示
  • vue+Echarts绘制k线图(二)--分时图和交易量图

    目录 1 前言 2 分时图 2 1 vue引入Echarts 2 2 分时图介绍 2 3 分时折线图配置 2 4 组合交易量图 2 5 鼠标指示数据设置 2 6 项目完整代码 3 总结 1 前言 近来发现Echarts API越发的强大 对
  • 二分查找的各种应用详解(C++)

    基本概念 Binary Search 二分查找也称折半查找 它是一种效率较高的查找方法 使用二分查找要求线性表必须采用顺序存储结构 而且表中元素按关键字有序排列 基本原理 查找 因为序列已经单调且有序排列 从中间位置开始比较 一次可以排除一
  • 只考一门数据结构!安徽工程大学计算机考研

    安徽工程大学 考研难度 内容 23考情概况 拟录取和复试分析 院校概况 23专业目录 23复试详情 各专业考情分析 各科目考情分析 正文992字 预计阅读 3分钟 2023考情概况 安徽工程大学计算机相关各专业复试和拟录取分析 083500
  • 分布式开放消息系统(RocketMQ)的原理与实践

    分布式开放消息系统 RocketMQ 的原理与实践 作者 CHEN川 关注 2016 02 25 15 43 字数 6784 阅读 135462 评论 49 喜欢 351 赞赏 7 一年前为了一次内部分享而写的这篇文章 没想到会有这么多人阅
  • (ANC)前三章思维导图总结

    最近发现对于一本书 如果一点点事无巨细的做笔记 效率会比较低 于是改变了一下之前的读书方式 用思维导图的做读书笔记 这样便于了解整本书的框架和每章的大致内容 也仅限于自己做笔记用
  • 数据结构和算法(栈的模拟、前中后缀表达式、表达式求值步骤和思路)

    1 栈的介绍 栈的英文为 stack 栈是一个先入后出 FILO First In Last Out 的有序列表 栈 stack 是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表 允许插入和删除的一端 为变化的一端 称
  • qt中qwt的安装的方式

    参考大神博客 https blog csdn net imkelt article details 51234230 utm medium distribute pc relevant none task blog BlogCommendF
  • Error in nextTick “TypeError Cannot read property ‘xxx‘ of undefined“

    报这个错主要是因为子组件还没加载完成就对子组件进行赋值 推荐使用第一个 this nextTick gt 修改子组件的内容 或 setTimeout gt 修改子组件的内容 50 父组件传值给子组件 子组件不能直接修改 会报错 子组件修改父
  • JavaScript中的endsWith

    如何在JavaScript中检查字符串是否以特定字符结尾 示例 我有一个字符串 var str mystring 我想知道该字符串是否以 结尾 我该如何检查 JavaScript中是否有endsWith 方法 我有一个解决方案是获取字符串的
  • 嘴说手画一文搞懂Spark的Join

    Spark Sql的Join和关系型数据库Sql的Join有很多相同点 比如inner join left join right join full join 这是二者都有的概念 并且含义相同 但是 Spark Sql是分布式执行 面对的是
  • ADB命令开启和关闭飞行模式,两段式操作方式!!!!

    开启飞行模式 必须要先执行1 再执行2 执行1 adb shell settings put global airplane mode on 1 执行2 adb shell am broadcast a android intent act
  • Docker部署Elasticsearch集群

    编写docker compose yml version 3 7 services es01 image elasticsearch 7 10 1 container name es01 ports 9200 9200 9300 9300
  • dc-1 靶机渗透学习

    环境 Vmware 虚拟机软件 dc 1 靶机ip地址 192 168 202 130 kali攻击机ip地址 192 168 202 129 本次渗透过程kali攻击机和dc靶机都采取NAT模式 信息收集 首先用ipconfig查看当前k
  • 初始化k8s踩过的坑

    问题一 error execution phase preflight couldn t validate the identity of the API Server abort connecting 这个问题网上有很多的解决方法 大致有
  • 【OpenCV】分离多通道图像RGB的值

    原文地址 http blog csdn net xiaowei cqu article details 7558657 1 计算图像ROI区域RGB的平均值 cvAvg函数 2 通道分离 合并的时候要特别的注意 分离之后的图像时单通道的灰度
  • RabbitMQ:使用Java进行操作

    使用Java操作消息队列 现在我们来看看如何通过Java连接到RabbitMQ服务器并使用消息队列进行消息发送 这里一起讲解 包括Java基础版本和SpringBoot版本 首先我们使用最基本的Java客户端连接方式
  • shell脚本的发送消息

    我们可以利用 Linux 自带的 mesg 和 write 工具 向其它用户发送消息 需求 实现一个向某个用户快速发送消息的脚本 输入用户名作为第一个参数 后面直 接跟要发送的消息 脚本需要检测用户是否登录在系统中 是否打开消息功能 以及当

随机推荐

  • 基于 LLM 的知识图谱另类实践

    本文整理自社区用户陈卓见在 夜谈 LLM 主题分享上的演讲 主要包括以下内容 利用大模型构建知识图谱 利用大模型操作结构化数据 利用大模型使用工具 利用大模型构建知识图谱 上图是之前 我基于大语言模型构建知识图谱的成品图 主要是将金融相关的
  • Go交叉编译

    交叉编译是指在一个硬件平台生成另一个硬件平台的可执行文件 而Go提供了非常方便的交叉编译方式 如何编译 Go交叉编译 涉及到几个环境变量的设置 GOARCH GOOS和CGO ENABLED GOARCH 编译目标平台的硬件体系架构 amd
  • 单元测试框架-Junit

    JUnit作为Java单元测试中的首选框架 在Java开发中使用最为广泛 JUnit 在测试驱动的开发方面有很重要的发展 教程 jUnit 教程 w3cschool BeforeAll修饰的 可以作为整个Class的初始化操作 前置操作 J
  • IDEA的run maven方式启动

    安装jetty插件 1 找到Plugins 查找jetty插件 安装 IDEA Jetty Runner 安装好后重启IDEA 安装插件 Maven Helper 方法同Jetty pom xml添加
  • cocos笔记——如何读取json表

    创建json表 1 将所需数据录入excel表格 或其他可转换为json表的文档 2 复制表中需要的文字 用在线json表转换工具 如 在线json校验格式化工具 中的Excel转json功能 将表格转化为json表的格式 3 复制转化好的
  • Chrome/Edge/Firefox浏览器离线安装包下载地址总汇

    Google Chrome谷歌浏览器离完整离线安装包下载地址整理总汇 每次重装系统 都要为安装 Chrome 而烦恼 虽然现在可以直接从谷歌浏览器官网下载在线安装包进行安装 但是在线安装包安装的版本不可控 大概率是 x86 版本 而且在断网
  • maven切换镜像源

    今天像往常一样准备构建项目时报错 原因是中央仓库暂停更新 导致很多jar包都没有 1 打开settings xml文件 settings xml文件一般在maven的安装目录conf文件夹下 2 切换镜像源 定位到
  • Lecture 9

    绪论 这一章节介绍的是divide and conquer multiplication divide的意思是分开 conquer的意思是占据 控制 divide and conquer直译下来就是分开后控制 其实就是分而治之的意思 mul
  • 手动可视化裁剪点云 (附open3d python代码)

    有时候 我们想要在一个比较刁钻的角度截取点云 或者想要截取一个多边形区域的点云 用代码可能不是那么方便的截取 这个时候 还是可视化的裁剪比较方便简单 代码如下 coding utf 8 import numpy as np import c
  • radare2 使用记录

    radare2 使用记录 编译 调试分析 数据结构 rasm disasm analop 反汇编 cs disasm libarch 编译 radare2 UNIX like reverse engineering framework an
  • VSCode 无法跳转C语言函数定义和变量定义的解决方案(本地端+远程服务器端)

    文章目录 前言 1 给本地端安装 C C 插件 2 给远程服务器端安装 C C 插件 小结 前言 初次使用 VSCode 编辑代码时 估计有不少小伙伴遇到过点击函数或变量无法跳转到定义处 左侧大纲栏里也没有任何内容的情况 这是缺少 C C
  • Vue项目运行报错:operty or method “xxx“ is not defined on the instance but referenced during render.

    报错原因 属性或方法 xxx未在实例上定义 但在渲染过程中被引用 解决方法 定义这个属性或者方法 1 只渲染了 没有定义 2 定义属性或方法 注意 如果定义了还是报这个错误 那么请一定检查定义的位置是不是正确的 博主偶尔也会出现这个问题 但
  • Spring cloud alibaba sentinel 实战

    Sentinel 分布式系统流量防卫兵 一 简介 二 特性 三 概念 四 安装 4 1 本地安装 4 2 docker 安装 五 实例 5 1 启动sentinel 5 2 模块配置 六 持久化配置 七 注意 6 1 SentinelRes
  • 奥拉星登陆显示网络或服务器,《奥拉星手游》进不去游戏怎么回事 无法进入游戏解决方法分享...

    导 读 奥拉星手游进不去游戏怎么办 很多玩家都卡顿在游戏外面了 那么遇到这个问题如何解决呢 下面九游小编为大家介绍奥拉星无法进入游戏解决方法 奥拉星无法进入游戏解决方法 目前测试服刚刚开服 人数在一时 奥拉星手游进不去游戏怎么办 很多玩家都
  • 二叉树(构造篇)

    二叉树 纲领篇 先复述一下前文总结的二叉树解题总纲 是否可以通过遍历一遍二叉树得到答案 如果可以 用一个 traverse 函数配合外部变量来实现 这叫 遍历 的思维模式 是否可以定义一个递归函数 通过子问题 子树 的答案推导出原问题的答案
  • 华为OD机试 - 判断一组不等式是否满足约束并输出最大差(Java)

    题目描述 给定一组不等式 判断是否成立并输出不等式的最大差 输出浮点数的整数部分 要求 不等式系数为 double类型 是一个二维数组 不等式的变量为 int类型 是一维数组 不等式的目标值为 double类型 是一维数组 不等式约束为字符
  • sublime添加直接运行语言的方法

    Tools Build system New Build System 添加新的编译文件 添加lua编译环境 cmd usr local bin lua file file regex lua t 0 9 0 9 selector sour
  • js检索关键字

    var i str indexOf 关键字 formi 查找str中formi的位置之后的下一个关键字的下标值 如果省略第二个关键字 则默认从0开始查找 如果没有找到 则返回 1 var i str lastIndexOf 关键字 form
  • title=“{{item.id}}“: Interpolation inside attributes has been removed. Use v-bind or the colon short

    title item id Interpolation inside attributes has been removed Use v bind or the colon shorthand instead v for列表渲染中给a ca
  • python中codecs模块_python自然语言编码转换模块codecs介绍

    python对多国语言的处理是支持的很好的 它可以处理现在任意编码的字符 这里深入的研究一下python对多种不同语言的处理 有一点需要清楚的是 当python要做编码转换的时候 会借助于内部的编码 转换过程是这样的 原有编码 gt 内部编