您的位置:

python中文字符问题(Python字符处理)

本文目录一览:

python 2.7输出中文字符串出现错误如何解决

由于汉字不属于ASCII编码表中的字符,因此,无论是在Python交互模式还是执行模式,很多时候都无法正常输出中文。

那么,怎样才能保证每一个汉字都能有唯一一个编码,不出现错误呢?

推荐涉及非ASCII码的程序使用Python内置的Unicode编码类型。

一般,在字符串前面加上u,即可声明为Unicode字符串。

或者,根据Python平台编码(cp936)来转换为Unicode:

unicode('你好', 'cp936')

然后,就可以给每一个汉字正确编码,正确输出了。

如何解决Python中文问题

python的中文问题一直是困扰新手的头疼问题,Python的发行版至今尚未包括任何中文支持模块。当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了。 笔者使用的是2.5版本。Python的版本可以通过调用sys模块的sys.version查看。在几个月的学习中,主要遇到以下问题:

1. print打印中文的问题:

在编辑器中输入一段测试代码:

s=’测试’

print s

运行结果如下:

Non-ASCII character '\xb2' in file c:\Documents and Settings\Administrator\桌面\2.py on line 1, but no encoding declared; see for details: 2.py, line 1, pos 0

原因是如果文件里有非ASCII字符,需要指定编码声明。把2.py文件的编码重新改为utf-8,并加上编码声明:

# -*- coding: utf-8 -*-

s=’测试’

print s

运行后可以正确打印中文。

2.中文路径的问题。

在D盘下保存一个名字为‘中文.txt‘的文件。运行如下测试代码:

# -*- coding: utf-8 -*-

f=open('D:\\中文.txt', 'r')

print f.read()

运行结果如下:

IOError: [Errno 2] No such file or directory: 'D:\\\xe4\xb8\xad\xe6\x96\x87.txt'

字符串有很多的编码,不同的系统和平台有各自的编码 ,为了实现系统或平台之间的信息交互可能需要编码转换。这里只需要先使用UNICODE编码一下,这样再读取中文路径就不会有问题了:

复制代码

# -*- coding: utf-8 -*-

path='D:\\中文.txt'

spath=unicode(path , "utf8")

f=open(spath,'r')

print f.read()

复制代码

然后就可以正确显示文件内容

总结:

所有的中文显示问题都可以归结为编码问题,遇到其他类似的问题,那只能仔细看文档,靠你的经验,靠你多做测试。而且根据python所报出来的错误一般也可以判断出来。那么当发现需要编码转换时,剩下的就是如何正确进行码制转换。

为了正确处理多语言文本,Python在2.0版后引入了Unicode字符串。从那时起,Python语言中的字符串就分为两种:一种是2.0版之前就已经使用很久的传统Python字符串,一种则是新的Unicode字符串。在Python语言中,一般的解决办法是使用unicode()内建函数对一个传统Python字符串进行“解码”,得到一个Unicode字符串,然后又通过Unicode字符串的encode()方法对这个Unicode字符串进行“编码”,将其“编码”成为传统Python字符串。

python2中出现中文字符乱码,怎么处理

在Python2.x中主要是字符编码的问题,处理不好的话,会导致乱码。

Python默认采取的ASCII编码,字母、标点和其他字符只使用一个字节来表示,但对于中文字符来说,一个字节满足不了需求。

Python判断字符串中是否有中文字符

首先,在Python中字符串的表示是 用unicode编码。所以在做编码转换时,通常要以unicode作为中间编码。

decode的作用是将其他编码的字符串转换成unicode编码,比如 a.decode('utf-8'),表示将utf-8编码的字符串转换成unicode编码

encode的作用是将unicode编码的字符串转换成其他编码格式的字符串,比如b.encode('utf-8'),表示将unicode编码格式转换成utf-8编码格式的字符串

判断一个字符串中是否含有中文字符:

好了,有了以上知识,就可以很容易的解决这个问题了。这是代码

1 #-*- coding:utf-8 -*-

2

3 import sys

4 reload(sys)

5 sys.setdefaultencoding('utf8')

6

7 def check_contain_chinese(check_str):

8 for ch in check_str.decode('utf-8'):

9 if u'\u4e00' = ch = u'\u9fff':

10 return True

11 return False

12

13 if __name__ == "__main__":

14 print check_contain_chinese('中国')

15 print check_contain_chinese('xxx')

16 print check_contain_chinese('xx中国')

17

18 结果:

19 True

20 False

21 True

Python中中文字符串怎么处理?

如果处理的字符串中出现中文表示的字符,要想不出错,就得转成unicode编码了。具体的方法有:

1、decode(),将其他边编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码;

2、encode(),将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码;

3、unicode(),同decode(),将其他编码的字符串转换成unicode编码,如unicode(str3, 'gb2312'),表示将gb2312编码的字符串str3转换成unicode编码。

转码的时候一定要先搞明白字符串str是什么编码,然后decode成unicode,最后再encode成其他编码。

另外,对一个unicode编码的字符串在进行解码会出错,所以在编码未知的情况下要先判断其编码方式是否为unicode,可以用isinstance(str, unicode)。

不仅是中文,以后处理含非ascii编码的字符串时,都可以遵循以下步骤:

1、确定源字符的编码格式,假设是utf8;

2、使用unicode()或decode()转换成unicode编码,如str1.decode('utf8'),或者unicode(str1, 'utf8');

3、把处理后字符串用encode()编码成指定格式。