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的字 ...
随机推荐
- JProtector 帮助文档
一.应用加密 1.使用 JProtector在线 进行应用加密:使用浏览器访问 http://app.shuton.net/encryptjar, 点击 Browse 选择待加密的应用jar包.war ...
- 什么是TimeTunnel
index - Taocode 欢迎使用TimeTunnel PageOutline(1-3,,inline) 什么是TimeTunnel !TimeTunnel(简称TT)是一个基于thrift通讯 ...
- in window js 未定义和undifined的区别
浏览器报错:未定义和undifined不是同一概念,前者是没有申明,后者是没有赋值. 1: <html> <body> <script> ...
- [置顶] c# datagridview‘s learn
c# 一串数字“1122331111155”,要输出到DataGridview控件上,但是要逐个数字读取,如果上一个数字与下一个相同,则排成一列,不相同,则另外排成一列.如“11223311111 ...
- VS2010 ,工程文件减肥
写一个bat文件来清理VS2010工程文件. 将其放入到工程文件夹下,双击即可自动将sdf,ipch等占用空间很大的文件删除. 这样的方式较之于转移浏览数据库文件的位置而言更为灵活一些,不用特别的设置 ...
- python几个特别函数map filter reduce lambda
lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x): return x**2 print f(4) Python中使用lambda的话,写成这样 g = l ...
- 常见Linux服务器操作系统版本中自带的OpenSSL版本
下表是常见服务器操作系统版本中自带的OpenSSL版本: 从上表可以看出,目前常用的服务器版本中,默认OpenSSL为1.0.2的只有Ubuntu 16.04 LTS.其他版本如果要升级OpenSSL ...
- Windows Service的官方描述,抄下来(不写obj就是LocalSystem)
How to create a Windows service by using Sc.exe Email Print Support for Windows XP has ended Micro ...
- Handler.removeMessages的作用,有时候为什么一定要先remove一下呢
removeMessages会将handler对应message queue里的消息清空,如果带了int参数则是对应的消息清空.队列里面没有消息则handler会不工作,但不表示handler会停止. ...
- 基于visual Studio2013解决算法导论之005原地随机排列数组
题目 原地随机排列数组 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...