python处理中文字符
1.在py文件中使用中文字符
unicode.py文件内容如下所示:
# -*- coding:utf-8 -*- str_ch = '我们women'
uni_ch = u'我们women' print "type:", type(str_ch), "content:", str_ch, repr(str_ch)
print "type:", type(uni_ch), "content:", uni_ch, repr(uni_ch)
需要在文件第一行输入以下内容:“# -*- coding: utf-8 -*-",否则在执行时将会抛出如下异常信息。
SyntaxError: Non-ASCII character '\xe6' in file unicode.py on line 3, but no encoding declared;
在声明编码类别后,执行结果如下:
type: <type 'str'> content: 我们women '\xe6\x88\x91\xe4\xbb\xacwomen'
type: <type 'unicode'> content: 我们women u'\u6211\u4eecwomen'
使用命令“od -t c unicode.py”查看文件在硬盘上的内容如下:
0000000 # - * - c o d i n g : u t f
0000020 - 8 - * - \n \n s t r _ c h =
0000040 ' 346 210 221 344 273 254 w o m e n ' \n u
0000060 n i _ c h = u ' 346 210 221 344 273 254
0000100 w o m e n ' \n \n p r i n t " t
0000120 y p e : " , t y p e ( s t r _
0000140 c h ) , " c o n t e n t : " ,
0000160 s t r _ c h , r e p r ( s
0000200 t r _ c h ) \n p r i n t " t y
0000220 p e : " , t y p e ( u n i _ c
0000240 h ) , " c o n t e n t : " ,
0000260 u n i _ c h , r e p r ( u n
0000300 i _ c h ) \n
注:346为8进制。
可以看到中文字符在硬盘中以utf-8形式保存,在执行时被python解释器读入内存,遇到非ascii字符时,需要用指定的编码进行转换。
2. Python中字符类型str和unicode
Unicode使用code point描述字符,一个code point就是一个整数值,16-bit。所以,unicode字符串就是一串code point。
书写的方式可以是:
uni_str = u"我们"
uni_str = u"\xac" # 2个16进制数表示
uni_str = u"\u1234" # 4个16进制数表示
uni_str = u"\U00008000" # 8个16进制数表示
str是8bit,从0-255。书写方式如下:
s = '0'
s = '\x30'
s = '\060'
s = chr(48)
# ord(s) 都是48
encoding:将unicode字符串转换成一串bytes(0-255)。
python默认的encoding和decoding都是ascii,当数值超过128时都将会报编码或解码错误。
python处理中文字符的更多相关文章
- [python]有中文字符程序异常的解决方案
一. 含有中文字符无法运行 在python3中用的是Unicode编码,Unicode号称万国码,可以向所有的编码进行兼容.不会出现这种问题. Python2中使用的是ASCII编码,会出现这种问题. ...
- 使用Python提取中文字符
#功能:国际化测试,用于提取应用设计包中的中文字符,并输出report#解压---筛选---整理路径---提取中文---输出报告 ################################### ...
- python 匹配中文字符
参考: http://hi.baidu.com/nivrrex/blog/item/e6ccaf511d0926888d543071.html http://topic.csdn. ...
- python实现中文字符繁体和简体中文转换-乾颐堂
需求:把中文字符串进行繁体和简体中文的转换: 思路:引入简繁体处理库,有兴趣的同学可以研究一下内部实现,都是python写的 1.下载zh_wiki.py及langconv zh_wiki.py:ht ...
- Python解决中文字符的问题
from __future__ import unicode_literals print(type("test")) #<type 'unicode'> Chinat ...
- python 连接数据库-设置oracle ,mysql 中文字符问题
import cx_Oracle import MySQLdb def conn_oracle(): cnn = cx_Oracle.connect('用户名','密码','ip:端口号/数据库') ...
- python中文字符乱码(GB2312,GBK,GB18030相关的问题)
转自博主 crifan http://againinput4.blog.163.com/blog/static/1727994912011111011432810/ 在玩wordpress的一个博客搬 ...
- Python中文字符的理解:str()、repr()、print
Python中文字符的理解:str().repr().print 字数1384 阅读4 评论0 喜欢0 都说Python人不把文字编码这块从头到尾.从古至今全研究通透的话是完全玩不转的.我终于深刻的理 ...
- 中文字符 unicode转utf-8函数 python实现
unicode编码范围 00000000-0000007F的字符,用单个字节来表示: 00000080-000007FF的字符用两个字节表示 (中文的编码范围) 00000800-0000FFFF的字 ...
随机推荐
- 几个BCB例子
http://blog.163.com/tab_98/blog/static/11924097201511274543737/
- Python 数据处理扩展包: numpy 和 pandas 模块介绍
一.numpy模块 NumPy(Numeric Python)模块是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list str ...
- svn笔记3
如果你是从头到尾按章节阅读本书,你一定已经具备了使用Subversion客户端执行大多数不同的版本控制操作足够的知识,你理解了怎样从Subversion版本库取出一个工作拷贝,你已经熟悉了通过svn ...
- VC中关于 0xcccccccc和 0xcdcdcdcd异常
VC在调试时,可能会报“写入位置0xcccccccc 时发生访问冲突”,或者“写入位置0xcdcdcdcd 时发生访问冲突”,这些问题可能是由于使用了未初始化的指针引起的. 在 Debug 模式下,V ...
- PopupWindow的使用以及ArrayAdatper.notifyDataSetChanged()无效详解
Android的对话框有两种:PopupWindow和AlertDialog.它们的不同点在于: AlertDialog的位置固定,而PopupWindow的位置可以随意 AlertDialog是非阻 ...
- Reverse Words in a String | LeetCode OJ | C++
我的思路:先读取每一个单词,存放到容器中:读取完毕后,将容器中的单词倒序写入输出中. #include<iostream> #include<string> #include& ...
- javascript每日一练(十四)——弹性运动
一.弹性运动 运动原理:加速运动+减速运动+摩擦运动: <!doctype html> <html> <head> <meta charset="u ...
- SQL Server 基础 04 函数与分组查询数据
函数与分组查询数据 系统函数分 聚合函数.数据类型转换函数.日期函数.数学函数 . . . 1. 聚合函数 主要是对一组值进行计算,然后返回一个值. 聚合函数包括 sum(求和).avg(求平均值). ...
- 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版
原文 [译]在Asp.Net中操作PDF - iTextSharp - 利用列进行排版 在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵 ...
- hibernate笔记(一)
一.主配置文件hibernate.cfg.xml 位置:放在src目录下. 主要包含信息: 一.数据库信息 数据库方言(类的全名) 及 数据库链接信息 1. 数据库方言 2. ...