最近写了一个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处理文本数据 学到的一些东西的更多相关文章

  1. python处理文本数据

    处理文本数据,主要是通过Seris的str访问.遇到NaN时不做任何处理,保留结果为NaN,遇到数字全部处理为NaN. str是Seris的方法,DataFrame不能直接使用,但是通过索引选择Dat ...

  2. Python的文本数据

    字符串的一些方法! 1.text.endswith(".jpg")        如果字符串是以给定子字符串结尾的,就返回值True. 2. text.upper():       ...

  3. python读取文本数据某一列

    import codecs f = codecs.open('test1 - 副本.txt', mode='r', encoding='utf-8') # 打开txt文件,以'utf-8'编码读取 l ...

  4. [Python] 文科生零基础学编程系列三——数据运算符的基本类别

    上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...

  5. Python文本数据互相转换(pandas and win32com)

    (工作之后,就让自己的身心都去休息吧) 今天介绍一下文本数据的提取和转换,这里主要实例的转换为excel文件(.xlsx)转换world文件(.doc/docx),同时需要使用win32api,同py ...

  6. [Python] 糗事百科文本数据的抓取

    [Python] 糗事百科文本数据的抓取 源码 https://github.com/YouXianMing/QiuShiBaiKeText import sqlite3 import time im ...

  7. Python爬虫工程师必学——App数据抓取实战 ✌✌

    Python爬虫工程师必学——App数据抓取实战 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统 ...

  8. Python之读写文本数据

    知识点不多 一:普通操作  # rt 模式的 open() 函数读取文本文件 # wt 模式的 open() 函数清除覆盖掉原文件,write新文件 # at 模式的 open() 函数添加write ...

  9. Python爬虫工程师必学APP数据抓取实战✍✍✍

    Python爬虫工程师必学APP数据抓取实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...

随机推荐

  1. C# Chart 折线图 多条数据展示

    private void btn_Click(object sender, EventArgs e) { DBHelper db = new DBHelper(); DataSet ds = db.G ...

  2. OTCL的多继承

    Class Thing Class Animal Class Other -superclass {Animal Thing} Thing instproc init {args} { puts &q ...

  3. iostat,mpstat,sar即时查看工具,sar累计查看工具

    iostat,mpstat,sar即时查看工具,sar累计查看工具

  4. C语言的本质(21)——预处理之三:其它预处理特性及总结

    C标准规定了几个特殊的宏,在不同的地方使用可以自动展开成不同的值,预编译程序对于在源程序中出现的这些串将用合适的值进行替换.这些宏有下面这些: __FILE__ 展开为当前源文件的文件名,是一个字符串 ...

  5. VS2010启动奔溃

    最近由于项目需要,装了git,需要用bitbucket管理源代码.没想到装了git得插件后 vs2010不能启动,卸载重新安装也行,修复也不行. 解决方案: 删除 目录C:\Users\用户名\App ...

  6. Java反射及依赖注入简单模拟

    一.编写Dao类 ? 1 2 3 4 5 6 7 8 9 10 11 package cn.com.songjy.annotation;   import java.util.Date;   publ ...

  7. JavaScript中模块“写法”

    在JavaScript模块到底是什么 event = function() { // do more return { bind: function() {}, unbind: function() ...

  8. Open Replicator

    Open Replicator ( http://code.google.com/p/open-replicator/ ) 开源了.Open Replicator是一个用Java编写的MySQL bi ...

  9. Linux 脚本整理

    本页主要用来记录一点 Shell 脚本. 1. cd - #切换回上一次的路径 这个命令对 cd 频繁的操作很有用 2. sudo !! #授权给上次录入的命令 比如一般非 root 用户在执行 if ...

  10. Oracle文章中常用数据表的描述

    desc stud; 名称   空值       类型           ---- -------- ------------ ID   NOT NULL NUMBER(38)   NAME     ...