用python處理文本數據 學到的一些東西


最近寫了一個python腳本,用TagMe的api標注文本,並解析返回的json數據。在這個過程中遇到了很多問題,學到了一些新東西,總結一下。

1. csv文件處理

csv是一種格式化的文件,由行和列組成,分隔符可以根據需要發生變化。只有分隔符為逗號','時,才會在excel中顯示為列。

python的csv模塊提供了reader和writer函數來讀寫csv格式的數據。

csv.reader(csvfiledialect='excel'**fmtparams)

csv.writer(csvfiledialect='excel'**fmtparams)

csvfile要是可以支持迭代操作的對象,比如file object或者是list object。

**If csvfile is a file object, it must be opened with the ‘b’ flag on platforms where that makes a difference.

csv模塊不支持Unicode字符的輸入,所有的輸入應該是UTF-8編碼或者ASCII。

官方文檔:https://docs.python.org/2/library/csv.html

 

2.字符編碼

python 2的默認字符編碼是ASCII,因此在處理的字符流不屬於ASCII范圍時,就會拋出異常UnicodeEncodeError:......:ordinal not in range(128)。

一種解決的方法是修改python 2的默認編碼,可以直接在程序中聲明:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

但是這種方法會給程序留下一些bug,具體可參考:

http://blog.ernest.me/post/python-setdefaultencoding-unicode-bytes

 

3. json處理

python提供了json模塊,可以用來解析json格式的字符串或者文件。

json.dump(objfpskipkeys=Falseensure_ascii=Truecheck_circular=True,allow_nan=Truecls=Noneindent=Noneseparators=Noneencoding="utf-8",default=Nonesort_keys=False**kw)

將一個object序列化為一個json格式的數據流,並輸出到file object中。

json.dumps(objskipkeys=Falseensure_ascii=Truecheck_circular=Trueallow_nan=Truecls=Noneindent=None,separators=Noneencoding="utf-8"default=Nonesort_keys=False**kw)

一個object序列化為一個json格式的字符串。

json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

將一個json格式的file object加載為python object。

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[,**kw]]]]]]]])

將一個json格式的字符串加載為python object。

官方文檔:https://docs.python.org/2.7/library/json.html?highlight=json

 

4. traceback

python提供了處理異常棧的模塊traceback,可以提供當前異常的具體信息,如異常位置、出現異常的語句、異常類型等。

traceback.print_exc(file=sys.stdout)  #在終端中輸出異常信息

fp=open("error.txt",'w')

traceback.print_exc(file=fp) #將錯誤信息輸出到文件中

traceback.format_exc() #將錯誤信息轉化為字符串類型

關於python traceback模塊 可以參考這篇博客:http://www.tuicool.com/articles/f2uumm

 

5. 格式化輸出

http://www.pythondoc.com/pythontutorial3/inputoutput.html

 

6. 文件重命名

import os
os.rename(src,dst)

    src——要修改的文件名,dst——修改后的文件名。

    重命名時,如果新文件名已經存在,就會報‘WindowsError: [Error 183]’ 錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM