成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python中文對相關文件的改編和處理

開發 后端
對于Python中文我們可以把文件改變為UTF-8,以及看看他的相關長度,同時也可以看看文章是如何的進行處理以及需要一流的問題等相關問題。

在Python中文中有很多的困難是新手的“克星”,以下文章是我們就這一問題給出的相關的解決方案,希望我們能夠從中得到一些好的方法去解決這些問題,以便更好的在計算機的運行中靈活應用。

import sys sys.version'2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)]'用記事本創建一個文件ChineseTest.py,默認ANSI:
s = "中文"
print s

測試一下瞧瞧:

  1. E:\Project\Python\Test>python中文Python ChineseTest.py  
  2. File "ChineseTest.py", line 1  
  3. SyntaxError: Non-ASCII character '\xd6' in file 
    ChineseTest.py on line 1, but no encoding declared; 

偷偷地把文件編碼改成UTF-8

  1. E:\Project\Python\Test>python 中文ChineseTest.py  
  2. File "ChineseTest.py", line 1  
  3. SyntaxError: Non-ASCII character '\xe4' in file 
    ChineseTest.py on line 1, but no encoding declared;無濟于事。  
  4.  

既然它提供了網址,那就看看吧。簡單地瀏覽一下,終于知道如果文件里有非ASCII字符,需要在***行或第二行指定編碼聲明。把ChineseTest.py文件的編碼重新改為ANSI,并加上編碼聲明

  1. coding=gbk 
  2. s = "中文" 
  3. print s再試一下:  
  4. E:\Project\Python\Test>python ChineseTest.py  
  5. 中文正常咯:) 

看一看它的長度

  1. coding=gbk 
  2. s = "中文" 
  3. print len(s)  

s這里是str類型,所以計算的時候一個中文相當于兩個英文字符,因此長度為4。
我們這樣寫

  1. coding=gbk 
  2. s = "中文" 
  3. s1 = u"中文" 
  4. s2 = unicode(s, "gbk") #省略參數將用python中文默認的ASCII來解碼  
  5. ss3 = s.decode("gbk") #把str轉換成unicode是decode,unicode函數
    作用與之相同  
  6. print len(s1)  
  7. print len(s2)  
  8. print len(s3)  
  9.  

 ()接著來看看文件的處理

建立一個文件test.txt,文件格式用ANSI,內容為:
abc中文
用python來讀取

  1. coding=gbk 
  2. print open("Test.txt").read()  
  3. 結果:abc中文  

把文件格式改成UTF-8:
結果:abc涓?枃
顯然,這里需要解碼:

  1. coding=gbk 
  2. import codecs  
  3. print open("Test.txt").read().decode("utf-8")  
  4. 結果:abc中文  

上面的test.txt我是用Editplus來編輯的,但當我用Windows自帶的記事本編輯并存成UTF-8格式時,
運行時報錯:
原來,某些軟件,如notepad,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符(0xEF 0xBB 0xBF,即BOM)。
因此我們在讀取時需要自己去掉這些字符,python中文中的codecs module定義了這個常量:

  1. coding=gbk 
  2. import codecs  
  3. data = open("Test.txt").read()  
  4. if data[:3] == codecs.BOM_UTF8:  
  5. datadata = data[3:]  
  6. print data.decode("utf-8")  
  7. 結果:abc中文  

(三)一點遺留問題

在第二部分中,我們用unicode函數和decode方法把str轉換成unicode。為什么這兩個函數的參數用"gbk"呢?
***反應是我們的編碼聲明里用了gbk(# coding=gbk),但真是這樣?
修改一下源文件:

  1. coding=utf-8  
  2. s = "中文" 
  3. print unicode(s, "utf-8")  
  4. 運行,報錯:  
  5. Traceback (most recent call last):  
  6. File "ChineseTest.py", line 3, in <module> 
  7. s = unicode(s, "utf-8")  
  8. UnicodeDecodeError: &apos;utf8&apos; codec can&apos;t decode
     bytes in position 0-1: invalid data  

簡單地說,python中的print直接把字符串傳遞給操作系統,所以你需要把str解碼成與操作系統一致的格式。Windows使用CP936(幾乎與gbk相同),所以這里可以使用gbk。
***測試:

  1. coding=utf-8  
  2. s = "中文" 
  3. print unicode(s, "cp936")  
  4. 結果:中文  

【編輯推薦】

  1. Python中文字符具體應用技巧分享
  2. Python連接數據庫兩種常用方法介紹
  3. Python流程控制關鍵字基本內容總結
  4. Python流程控制關鍵字基本內容總結
  5. Python文件路徑具體操作方法經典講解
責任編輯:佚名 來源: 驅動之家
相關推薦

2010-03-05 09:40:08

Python遞歸

2023-04-07 08:32:31

模塊Python

2009-09-02 14:00:34

C#文件處理

2010-03-09 17:23:12

python開源

2009-12-22 15:03:51

ADO.NET使用

2010-04-02 10:30:52

Oracle備份

2023-11-30 16:05:17

2010-03-10 13:59:40

Python異常處理

2009-06-23 18:11:02

JSF的生命周期Ajax處理

2010-09-10 14:34:02

Squid動態頁面

2009-07-17 17:33:22

jQuery

2011-01-18 15:57:00

Postfix

2010-03-24 16:25:18

Python源代碼

2009-08-05 18:28:05

C#異常處理

2010-03-11 11:10:14

Python函數式

2010-03-23 16:30:47

Python文件復制

2009-07-29 15:58:54

靜態文件處理ASP.NET

2010-03-01 14:02:26

Python批處理語言

2025-01-16 16:36:00

2009-07-15 18:06:38

Swing線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天天操 | 久久久91精品国产一区二区三区 | 中国一级毛片免费 | 一区二区三区国产 | 亚洲精品综合一区二区 | 国产传媒视频在线观看 | 色中文在线 | 在线欧美日韩 | 亚洲欧美中文日韩在线v日本 | 久色激情 | 精品一区二区三区四区五区 | 久久精品中文 | www国产成人免费观看视频 | 亚洲 91| 亚洲小视频在线播放 | 秋霞av国产精品一区 | 免费骚视频 | 天天夜碰日日摸日日澡 | 精品91av| 成人永久免费视频 | 久草在线影 | 久久亚洲综合 | 欧美日韩高清 | 久久精品99 | 欧美精品一区二区三区蜜桃视频 | 操操操日日日 | 天天色综| 99免费在线观看视频 | 日日操夜夜摸 | 精品综合久久久 | 久久久久国产精品 | 色综合久久伊人 | 欧美xxxx网站 | 午夜爽爽爽男女免费观看 | 久久久久国产一区二区三区四区 | 亚洲视频一区在线观看 | 成年人在线观看视频 | 日韩在线视频一区 | 视频一区二区在线观看 | 亚洲国产一区二区三区 | 午夜小视频免费观看 |