您的位置:首页 > 编程语言 > Python开发

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

2016-06-06 22:07 477 查看
最近写了一个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]’ 错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: