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

  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. Eclipse setting Java code style and codetemplate

    1.open the eclipse tool window First click the Window menu,then check the children's menu which name ...

  2. sae python安装第三方模块

    sae python安装第三方模块 经过这一个星期的折腾,发现编程真心不是看出来的,真心是跟着书上的代码敲出来的.sae的服务做得很好,不过有时候会崩就是了.当sae上没有自己所需要的第三方模块时,可 ...

  3. 基于winform的二进制图片数据的存取(用于数据库照片的读写处理)

    编程目的:文本框1中输入id号,则从openFileDialog中选择的图片会以二进制数据存进SQL数据库的对应表的id列:文本框2中输入姓名,从数据库读取对应name的照片并显示在pictureBo ...

  4. android 滚动条

    ScrollView简单应用 activity中经常只是一个LinearLayout,但这样的话,如果activity内容超过一屏,无法滚动查看下面的内容. 这时只需在外面嵌套一个ScrollView ...

  5. OC基础10:基本的C语言特性1

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.  函数和方法的区别? (1).方法包 ...

  6. 加濾鏡效果GlowTween

    /** * * new GlowTween(xxxx, 0xFFFF00); * new GlowTween(xxxx, 0x00FFFF); * GlowTween */ package com.r ...

  7. leetcode_question_102 Binary Tree Level Order Traversal

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  8. 安装Linux系统到u盘

    第一步:首先插入u盘到电脑主机usb接口处(建议插入到主机箱后置的usb接口).然后打开UltraISO软件,再打开选择须要写入u盘的Ubuntu 10.04或者其它版本号的Linux系统的iso镜像 ...

  9. RCTF Re300 Writeup

    发现一篇写得更好的:http://insight-labs.org/?p=2009  程序要求输入一个flag.拿ida加载后,发现是Upx壳,脱壳后加载入ida进行分析.定位到输入flag的地方,如 ...

  10. HTML5+AJAX+WEBAPI 文件上传

    总体的思路是把文件转换成base64字符串传递给后台,然后再把base64字符串转换成二进制,转成文件. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTM ...