python处理中文字符串_处理python字符串中的中文字符
# -*- coding:utf-8 -*-
import sys,os
txta = open('a.txt','r')
str = ''
for line in txta:
str += line.strip().decode('utf-8')
txta.close()
for word in str:
print word.encode('utf-8')
直接輸出,是會亂碼的,得先解碼,再編碼。
參考網(wǎng)址:http://blog.csdn.net/devil_2009/article/details/39526713
首先要明白的是,python里面默認的字符串都是ASCII編碼,是string類型,ASCII編碼處理中文字符是會出問題的。python的內(nèi)部編碼格式是unicode,在字符串前加‘u’前綴也可直接聲明unicode字符串,如 u'hello'就是unicode類型。
如果處理的字符串中出現(xiàn)非ascii碼表示的字符,要想不出錯,就得轉(zhuǎn)成unicode編碼了。具體的方法有:
decode(),將其他邊編碼的字符串轉(zhuǎn)換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字符串str1轉(zhuǎn)換成unicode編碼;
encode(),將unicode編碼轉(zhuǎn)換成其他編碼的字符串,如str2.encode('gb2312'),表示將unicode編碼的字符串str2轉(zhuǎn)換成gb2312編碼;
unicode(),同decode(),將其他編碼的字符串轉(zhuǎn)換成unicode編碼,如unicode(str3, 'gb2312'),表示將gb2312編碼的字符串str3轉(zhuǎn)換成unicode編碼。
轉(zhuǎn)碼的時候一定要先搞明白字符串str是什么編碼,然后decode成unicode,最后再encode成其他編碼。
另外,對一個unicode編碼的字符串在進行解碼會出錯,所以在編碼未知的情況下要先判斷其編碼方式是否為unicode,可以用isinstance(str, unicode)。
不僅是中文,以后處理含非ascii編碼的字符串時,都可以遵循以下步驟:
1、確定源字符的編碼格式,假設(shè)是utf8;
2、使用unicode()或decode()轉(zhuǎn)換成unicode編碼,如str1.decode('utf8'),或者unicode(str1, 'utf8');
3、把處理后字符串用encode()編碼成指定格式。
總結(jié)
以上是生活随笔為你收集整理的python处理中文字符串_处理python字符串中的中文字符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本人70纯刷图红眼 偶尔pk 刚买了70
- 下一篇: 试管婴儿只能刨腹产吗