用python处理文本数据 学到的一些东西

Posted summerkiki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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]’ 错误。

以上是关于用python处理文本数据 学到的一些东西的主要内容,如果未能解决你的问题,请参考以下文章

笨办法学Python(三十八)

对于Python学习的一些思考

Pytorch RNN 模型没有学到任何东西

下载NLP绝佳入门经典图书《NLTK-Python自然语言处理》中英文版, 教程+代码手把手带你实践NLP算法

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

跟着Alex学习python