自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

有關(guān)Python中文問題進(jìn)行詳細(xì)說明

開發(fā) 后端
下面文章著重進(jìn)行介紹有關(guān)Python中文問題的方法,還有一些Python代碼的東西,我相信這正是大多數(shù)程序員和技術(shù)人員想要了解的問題。

在講解Python中文問題之前,先說一下什么是Python,前一陣對Python產(chǎn)生了濃厚的興趣,誰知道跟中文問題這個(gè)老朋友又一次不期而遇,看來,在代碼中,Python中文的問題總是常常的困擾著我們的。。

這也難怪,誰讓當(dāng)初發(fā)明計(jì)算機(jī)的不是我們中國人呢,否則,現(xiàn)在全世界的計(jì)算機(jī)都支持而且必須支持GBK,這樣。寫這樣文章的人就不會是我了,而是大洋彼岸的一個(gè)金發(fā)碧眼的程序員,而且標(biāo)題也相應(yīng)改為 “studying the english problem in '大蟒' ”。

還是面對現(xiàn)實(shí)問題吧。相對java而言,中文問題在Python中的表現(xiàn)更為激烈?!凹ち摇钡囊馑疾皇钦f更為嚴(yán)重或者說難于解決。只是 Python對于decode&encode錯(cuò)誤的默認(rèn)處理方式為strict,也就是直接報(bào)錯(cuò),而java使用replace的方式來處理了,因此 java出現(xiàn)中文問題后會打印出很多"??"。

此外,Python的默認(rèn)的encoding是ASCII,而java的默認(rèn)encoding跟操作系統(tǒng)的 encoding是一致的。在這一點(diǎn)上,我覺得java更為合理,這樣對程序員更為友好,也減少了newbies 開始時(shí)的挫折感,是有利于語言的推廣的。

但是,Python也有它的道理,畢竟ASCII是***的全世界所有平臺都支持的字符集,而且問題始終是問題,始終會出現(xiàn)的,逃避它還不如早點(diǎn)面對它。好了,說了這么多,該說說Python中中文問題的癥狀了。在這之前,我們先要了解Python中有兩種字符串,分別是一般的字符串(每個(gè)字符用8 bits表示)和Unicode字符串(每個(gè)字符用一個(gè)或者多個(gè)字節(jié)表示)。

它們可以相互轉(zhuǎn)換,有著更為全面的描述,在此我就不再多說什么了。來看下面的代碼:

  1.  # -*- coding:gb2312 -*- #必須在***行或者第二行  
  2. print "-------------code 1----------------"  
  3. a = "中文a我愛你" 
  4. print a  
  5. print a.find("我")  
  6. b = a.replace("愛", "喜歡")  
  7. print b  
  8. print "--------------code 2----------------"  
  9. x = "中文a我愛你" 
  10. y = unicode(x, "gb2312")  
  11. print y.encode("gb2312")  
  12. print y.find(u"我")  
  13. z = y.replace(u"愛", u"喜歡")  
  14. print z.encode("gb2312")  
  15. print "---------------code 3----------------"  
  16. print y 

說是遇到非ASCII字符了,并讓我們參考pep-0263。PEP-0263(Python Enhancement Proposal)上面說得很清楚了,Python也意識到了國際化問題,并提出了解決方案。根據(jù)提案上面的要求,我們有如下代碼:

  1. -------------code 1----------------  
  2. 中文a我愛你  
  3. 5  
  4. 中文a我喜歡你  
  5. --------------code 2----------------  
  6. 中文a我愛你  
  7. 3  
  8. 中文a我喜歡你  
  9. ---------------code 3----------------  
  10. Traceback (most recent call last):  
  11.   File "G:\Downloads\eclipse\workspace\p\src\hello.py", line 16, in <module> 
  12.     print y  
  13. UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) 

我們可以看到,通過引入Python中文問題聲明,我們可以正常地在使用中文了,而且在code 1和2中,控制臺也能正確的把中文打印出來。但是,很明顯,上面的代碼也反映出了不少的問題:
1、code 1 和 2在使用print時(shí)采用了不同的方式,1是直接print,而2在print之前先進(jìn)行編碼
2、code 1 和 2中在同樣的字符串查找同一個(gè)字符“我”,得出的結(jié)果不一樣(分別是5和3)
3、code 3 中直接打印unicode字符串 y時(shí)出現(xiàn)錯(cuò)誤(這也是為什么code 2中要先進(jìn)行編碼的原因)

【編輯推薦】

  1. 有關(guān)Python系統(tǒng)文件進(jìn)行介紹指導(dǎo)
  2. 如何正確的使用Python函數(shù)
  3. 對Python 構(gòu)建工具進(jìn)行詳細(xì)介紹分析
  4. PythonAndroid淺析Python優(yōu)勢所在
  5. 如何使用Python模塊解析配置文件?
責(zé)任編輯:chenqingxiang 來源: CSDN
相關(guān)推薦

2010-01-13 13:27:00

C++優(yōu)化

2010-02-26 09:42:52

Python線程池

2010-02-06 16:57:43

Android操作系統(tǒng)

2010-03-05 15:58:11

操作系統(tǒng)Android

2009-12-08 17:34:25

WCF的配置

2010-02-24 10:07:28

Python虛擬機(jī)

2009-12-07 13:12:18

WFC端口

2010-01-05 17:06:46

JSON 數(shù)據(jù)

2010-02-22 17:54:07

Python工具

2010-02-22 16:26:21

Python編輯

2010-01-19 09:54:19

C++代碼

2009-12-09 15:40:04

Visual Stud

2009-12-11 14:21:55

VS2010程序

2009-12-29 15:30:15

ADO Insert

2010-02-22 16:40:22

Python解釋器

2009-12-28 09:26:09

ADO對象

2010-02-24 17:22:59

Python項(xiàng)目

2010-01-04 10:39:33

ADO.NET描述

2009-12-29 15:22:40

ADO.NET類庫

2010-02-23 11:18:25

Python 操作符
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號