Python处理中文语言——读取中文

2023-05-16

本文解决问题:

1、导入中文txt文本,并转换为unicode

2、导入包含中文的py file


-----------------------------------解决问题一:导入中文txt文本,并转换为unicode-----------------------------------

基础概念

1、unicode、UTF-8

简单理解,unicode是一种处理所有非英文语言的编码方式,即将每个语言中的每个文字设置成不同的数字,避免造成混乱。unicode目前覆盖了世界上的主流语言,有超过一百多万个编号。UTF-8是实现unicode的一种方式。ASCII是不同于unicode的另外一种编码方式。详细介绍可见参考文章1。

2、encoding

将文本转化为数字的一系列规则叫作encoding。


核心代码

string.decode(*encoding*)   # from <type 'str'> to <type 'unicode'>
unicode.encode(*encoding*)   # from <type 'unicode'> to <type 'str'>


执行步骤:

1、将原始文本的编码方式保存为utf-8格式。

2、在python程序中导入文本

fr = open('all.txt','r')   #读写模式:r-只读;r+读写;w-新建(会覆盖原有文件);更多信息见参考文章2
all_utf8 = fr.read()
all_utf8   #屏幕上会出现类似“\xe86\xe95\xa3”的文字</span>
3、将 原始文本的编码方式解码,即 转换为unicode。可使用下面两种方式的任意一种。

all_uni = all_utf8.decode("utf-8")

all_uni = unicode(all_utf8, 'utf-8')

4、比较转换前和转换后的文本

print all_utf8   #乱码
print all_uni   #中文


处理非英文文本,最重要的点是:

1、Decode early (尽早decode, 将文件中的内容转化成 unicode 再进行下一步处理)

def to_unicode_or_bust(obj, encoding='utf-8'):
	if isinstance(obj, basestring):   #检查是否为字符串
		if not isinstance(obj, unicode):   #检查编码是否为unicode
			obj = unicode(obj, encoding)   #使用UTF-8,将文本转换为unicode
	return obj
'''检查一个obejct是否是字符串,如是非unicode的字符串将其转换成unicode。'''

2、Unicode everywhere (程序内部处理都用unicode)

to_unicode_or_bust(all_utf8)

3、Encode late (最后encode回所需的encoding, 例如把最终结果写进结果文件)

file = open('all_out.txt','wb')   #创建一个all_out的txt文件
file.write(all_uni.encode('utf-8'))   #用utf-8编码方式保存all_uni
file.close()   #保存完毕


其它:

1、查看python默认的编码方式

import sys
sys.getdefaultencoding()   # 'ascii'

2、更改python默认的编码方式

sys.setdefaultencoding('utf-8')

3、使用codecs模块导入文档:用codecs提供的open方法,可以指定打开的文件的语言编码,并在读取的时候自动转换为unicode。

import codecs
file = open('all_out.txt', 'r', encoding = 'utf-8')

4、BOM

windows下加载文本,有时会出现BOM头,即在文件的开头有'特殊'的记号标识该文件属于UTF-8编码。

使用codecs模块,检查是否有BOM头的方法

fr = open('all.txt','r')
sample = fr.read(4)
sample.startswith(codecs.BOM_UTF16_LE) or sample.startswith(codecs.BOM_UTF16_BE)

UTF-16格式的文本在decode是会自动删除BOM;UTF-8文本删除BOM使用如下代码

string.decode('utf-8-sig')


--------------------------------------------解决问题二:导入包含中文的py file--------------------------------------------

Python默认使用ASCII编码作为标准编码方式,所以需要在文档的第一行或第二行注明我们的编码方式。

核心代码(标注方式)

# coding=<encoding name>
或者

#!/usr/bin/python
# -*- coding: <encoding name> -*-
或者

#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
这里只要符合正则表达式"^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)"即可,所以等号也可以替换为冒号


执行步骤

1、在记事本中输入以下代码,使用ANSI格式保存,命名为test.py

# coding=UTF-8
s = "中文"
print s
2、在python中导入py file

import test

其它:

我们也可以使用普通文本来表示编码,例如在记事本中输入:

# This Python file uses the following encoding: utf-8
s = "中文"
print s



参考文章:

1、字符编码笔记:ASCII,Unicode和UTF-8

http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

2、python:open/文件操作

http://www.cnblogs.com/dkblog/archive/2011/02/24/1980651.html

3、Python处理中文的时候的一些小技巧

http://coolshell.cn/articles/461.html

4、PEP 263 -- Defining Python Source Code Encodings

https://www.python.org/dev/peps/pep-0263/

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

Python处理中文语言——读取中文 的相关文章

  • Windows将FRP设置为服务并开机自启

    1 此处需要使用到winsw 下载地址 https github com kohsuke winsw releases 2 下载解压至任意目录并CD进入 这里将下载WinSw Net4 exe重命名为winsw exe了 xff0c 以方便
  • 使用HAL库驱动WS2812 LED的STM32F401代码示例

    使用HAL库驱动WS2812 LED的STM32F401代码示例 include 34 stm32f4xx hal h 34 include lt stdlib h gt define LED COUNT 10 TIM HandleType
  • 开源项目-esp32—S3+lvgl智能手表

    23 5 4 QF ZERO V2 V1 0 2 智能手表终端 嘉立创EDA开源硬件平台 oshwhub com 致敬大神 硬件资源 xff1a 1 xff09 ESP32 S3 为核心主控 xff0c 负责复杂的运算与交互处理 xff0c
  • nRF52832芯片使用ADC的代码示例

    nRF52832芯片使用ADC的代码示例 define ADC REF VOLTAGE IN MILLIVOLTS 600 lt Reference voltage in millivolts used by ADC while doing
  • nRF52832的I2C例程代码

    nRF52832的I2C例程代码 include 34 nrf drv i2c h 34 include 34 app error h 34 define I2C SCL PIN 0 SCL引脚号 define I2C SDA PIN 1
  • HX711 24位A/D模块计算公式

    基本原理讲解 100kg 传感器 满量程输出电压 61 激励电压 灵敏度2 0mv v 例如 xff1a 供电电压是5v 乘以灵敏度2 0mv v 61 满量程10mv 相当于有100Kg 重力产生时候产生10mV 的电压 711模块对产生
  • stm32 keil实现串口printf输出中文字符

    添加如下代码 xff0c 可以GNUC的方式实现 span class hljs comment ifdef GNUC span With GCC RAISONANCE small printf option LD Linker gt Li
  • stm32 基于TIM1定时器的PWM输出

    void PWM TIM1 uint16 t arr uint16 t psc RCC APB2PeriphClockCmd RCC APB2Periph TIM1 ENABLE 定时器TIM1时钟使能 TIM DeInit TIM1 设置
  • stm32 can总线参考例程

    CAN初始化 tsjw 重新同步跳跃时间单元 范围 1 3 CAN SJW 1tq CAN SJW 2tq CAN SJW 3tq CAN SJW 4tq tbs2 时间段2的时间单元 范围 1 8 tbs1 时间段1的时间单元 范围 1
  • 物联网IOT-mqtt协议

    MQTT是一种客户机服务器发布 订阅消息传递传输协议 它重量轻 开放 简单 设计简单 易于实现 这些特性使其非常适合在许多情况下使用 xff0c 包括受限的环境 xff0c 如机器间通信 M2M 和物联网 IoT 环境 xff0c 在这些环
  • 联合索引的最左匹配原则的成因

    联合索引的最左匹配原则的成因 上面我们只看的是单一的索引 xff0c 接下来咱们来看看联合索引 xff0c 也就是回答第二个问题 联合索引的最左匹配原则的成因 什么是联合索引呢 xff0c 就是由多列组成的索引了 那亦要了解其成因 xff0
  • 腾讯云轻量服务器的Ubuntu如何使用root(根)用户登陆ssh/Shell/terminal/终端/WindTerm/FinalShell

    Ubuntu 系统的默认用户名是 ubuntu xff0c 并在安装过程中默认不设置 root 帐户和密码 您如有需要 xff0c 可在设置中开启允许 root 用户登录 具体操作步骤如下 xff1a 使用 ubuntu 帐户登录轻量应用服
  • Ubuntu安装sshd服务

    ubuntu安装ssh服务 一 安装shhd SSH分客户端openssh client和openssh server 如果你只是想登陆别的机器的SSH只需要安装openssh client xff08 ubuntu有默认安装 xff0c
  • Linux环境(六)--资源与限制

    资源与限制 运行在Linux系统上的程序是有资源限制的 这些也许是硬件引起的限制 例如内存 xff0c 也许由系统策略引起的限制 例如 xff0c 允许 的CPU时间 xff0c 或者是实现的限制 例如 xff0c 整数的尺寸或是文件名允许
  • 遇到了C/C++控制台程序无法输入中文的情况

    其实C C 43 43 控制台程序无法cin中文的情况并不是你使用了string xff0c string是能输入并保存中文的 xff1b 经过一番探究 xff0c 我发现主要的问题是文件的编码和控制台所处的代码页 xff08 控制台的编码
  • Jpg2Dcm中文乱码问题

    Jpg2Dcm中文乱码问题 最近老板提出了一个新的功能要求 xff0c 希望可以把图片转成dcm 在实现功能的问题中遇见了很多问题和掉过许多坑 于是在此记录下来 问题 xff1a 第一次在进行Jpg2Dcm时 xff0c 可以进行图片转dc
  • 神经网络的数学表达式,神经网络的数学理论

    什么是神经网络 神经网络可以指向两种 xff0c 一个是生物神经网络 xff0c 一个是人工神经网络 生物神经网络 xff1a 一般指生物的大脑神经元 xff0c 细胞 xff0c 触点等组成的网络 xff0c 用于产生生物的意识 xff0
  • python装饰器详解(四)---把参数传递给装饰器

    因为装饰器必须接收一个函数当做参数 所以 不可以直接把被装饰函数的参数传递给装饰器 装饰器就是一个普通的函数 xff0c 回顾 def my decorator func print 34 I am an ordinary function
  • Motion Deblurring图像运动去模糊代码

    http www di ens fr whyte Efficient Deblurring for Shaken and Partially Saturated Images http www di ens fr willow resear
  • maven执行install时报错 The packaging for this project did not assign a file to the build artifact

    问题描述 maven中执行plugins下面的install install时会报如下错误 span class token class name Failed span span class token keyword to span s

随机推荐

  • realsense相机两种获取相机内外参的方式

    https www it610 com article 1296417297711308800 htm 命令 xff1a rs sensor control 这个命令是一个exe文件 xff0c 可以去 C Program Files x8
  • wget设置代理

    1 在bash shell中设定代理 basrhc export http proxy 61 34 166 111 53A 167 3128 34 export ftp proxy 61 34 166 111 53A 167 3128 34
  • chown,chgrp,chmod,u+s,g+s,o+t

    chown user file directory change owner 将后面的目标文件或者目录的所有者替换成 user chgrp group file directory change group 将目标文件或者目录的所有组替换成
  • Segment Routing笔记(一)

    SR 理论 一 MPLS TE缺点 RSVP TE大部分都是为了FRR的目的不支持ECMP所有流量都需要在隧道里诞生了 战术型 TE xff0c 只在需要的时候使用 术语 TI LFA 与拓扑无关的无环路备份 xff0c 能保证备份路径的最
  • Springboot+Netty搭建UDP服务端

    UDP是一个无连接协议 xff0c 应用范围很大 xff0c 对于一些低功耗的设备可以使用UDP方式向云端推送消息信息 xff0c 也可以在推送消息时收到从云端原路返回的消息 xff0c 使用Netty 43 SpringBoot方式可以快
  • Springboot+Netty搭建UDP客户端

    使用Netty 43 SpringBoot方式可以快速地开发一套基于UDP协议的服务端程序 xff0c 同样的也可以开发客户端 xff0c 一般使用UDP都是使用原生的方式 xff0c 发送消息后就不管不问 xff0c 也就是不需要确定消息
  • Springboot+Netty搭建MQTT协议的服务端(基础Demo)

    Netty是业界最流行的nio框架之一 xff0c 结合springboot可以满足快速开发 MQTT xff08 Message Queuing Telemetry Transport xff0c 消息队列遥测传输协议 xff09 xff
  • SpringBoot+Shiro+Jwt+Vue+elementUI实现前后端分离单体系统Demo

    记录一下使用SpringBoot集成Shiro框架和Jwt框架实现前后端分离Web项目的过程 xff0c 后端使用SpringBoot整合Shiro 43 Jwt auth0 xff0c 前端使用vue 43 elementUI框架 xff
  • Centos系统安装RabbitMQ消息中间件

    记录一下在centos7 x下面安装RabbitMQ消息中间件 RabbitMQ是一个开源而且遵循 AMQP协议实现的基于 Erlang语言编写 xff0c 因此安装RabbitMQ之前是需要部署安装Erlang环境的 先安装Erlang
  • SpringBoot+RXTXcomm实现Java串口通信 读取串口数据以及发送数据

    记录一下使用SpringBoot 43 RXTXcomm实现Java串口通信 xff0c 使用Java语言开发串口 xff0c 对串口进行读写操作 RXTXcomm jar这个包支持的系统较多 xff0c 但是更新太慢 xff0c 在win
  • Springboot+Netty搭建TCP服务端

    Netty是业界最流行的nio框架之一 xff0c 它具有功能强大 性能优异 可定制性和可扩展性的优点 Netty的优点 xff1a 1 API使用简单 xff0c 开发入门门槛低 2 功能十分强大 xff0c 预置多种编码解码功能 xff
  • Springboot+Netty搭建TCP客户端-多客户端

    之前搭建了一个Springboot 43 Netty服务端的应用 xff0c 既然有服务端 xff0c 自然也有客户端的应用 xff0c 现在搭建一个Springboot 43 Netty客户端的应用Demo程序 xff0c 多客户端方式
  • 机器学习中的凸和非凸优化问题

    题目 xff08 145 xff09 xff1a 机器学习中的优化问题 xff0c 哪些是凸优化问题 xff0c 哪些是非凸优化问题 xff1f 请各举一个例子 凸优化定义 凸优化问题 非凸优化问题 凸优化定义 xff1a 公式 geome
  • VMware workstation中rhel安装VMware tools失败

    切换登录用户为root即可 转载于 https www cnblogs com dazzleC p 10555809 html
  • Uniform convergence may be unable to explain generalization in deep learning

    本文价值 xff1a understand the limitations of u c based bounds cast doubt on the power of u c bounds to fully explain general
  • 调参之learning rate

    The learning rate is perhaps the most important hyperparameter If you have time to tune only one hyperparameter tune the
  • 调超参(lr,regularization parameter)经验整理

    Learning rate 最优值从1e 4到1e 1的数量级都碰到过 xff0c 原则大概是越简单的模型的learning rate可以越大一些 https blog csdn net weixin 44070747 article de
  • Dropout network, DropConnect network

    Notations input v v v output r r r weight parameter
  • Curriculum adversarial training

    Weakness of adversarial training overfit to the attack in use and hence does not generalize to test data Curriculum adve
  • Python处理中文语言——读取中文

    本文解决问题 xff1a 1 导入中文txt文本 xff0c 并转换为unicode 2 导入包含中文的py file 解决问题一 xff1a 导入中文txt文本 xff0c 并转换为unicode 基础概念 xff1a 1 unicode