用python处理文本数据 学到的一些东西
Posted summerkiki
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python处理文本数据 学到的一些东西相关的知识,希望对你有一定的参考价值。
最近写了一个python脚本,用TagMe的api标注文本,并解析返回的json数据。在这个过程中遇到了很多问题,学到了一些新东西,总结一下。
1. csv文件处理
csv是一种格式化的文件,由行和列组成,分隔符可以根据需要发生变化。只有分隔符为逗号‘,‘时,才会在excel中显示为列。
python的csv模块提供了reader和writer函数来读写csv格式的数据。
csv.
reader
(csvfile, dialect=‘excel‘, **fmtparams)
csv.
writer
(csvfile, dialect=‘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
(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8",default=None, sort_keys=False, **kw)
将一个object序列化为一个json格式的数据流,并输出到file object中。
json.
dumps
(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None,separators=None, encoding="utf-8", default=None, sort_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处理文本数据 学到的一些东西的主要内容,如果未能解决你的问题,请参考以下文章
下载NLP绝佳入门经典图书《NLTK-Python自然语言处理》中英文版, 教程+代码手把手带你实践NLP算法