用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处理文本数据 学到的一些东西的更多相关文章
- python处理文本数据
处理文本数据,主要是通过Seris的str访问.遇到NaN时不做任何处理,保留结果为NaN,遇到数字全部处理为NaN. str是Seris的方法,DataFrame不能直接使用,但是通过索引选择Dat ...
- Python的文本数据
字符串的一些方法! 1.text.endswith(".jpg") 如果字符串是以给定子字符串结尾的,就返回值True. 2. text.upper(): ...
- python读取文本数据某一列
import codecs f = codecs.open('test1 - 副本.txt', mode='r', encoding='utf-8') # 打开txt文件,以'utf-8'编码读取 l ...
- [Python] 文科生零基础学编程系列三——数据运算符的基本类别
上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...
- Python文本数据互相转换(pandas and win32com)
(工作之后,就让自己的身心都去休息吧) 今天介绍一下文本数据的提取和转换,这里主要实例的转换为excel文件(.xlsx)转换world文件(.doc/docx),同时需要使用win32api,同py ...
- [Python] 糗事百科文本数据的抓取
[Python] 糗事百科文本数据的抓取 源码 https://github.com/YouXianMing/QiuShiBaiKeText import sqlite3 import time im ...
- Python爬虫工程师必学——App数据抓取实战 ✌✌
Python爬虫工程师必学——App数据抓取实战 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统 ...
- Python之读写文本数据
知识点不多 一:普通操作 # rt 模式的 open() 函数读取文本文件 # wt 模式的 open() 函数清除覆盖掉原文件,write新文件 # at 模式的 open() 函数添加write ...
- Python爬虫工程师必学APP数据抓取实战✍✍✍
Python爬虫工程师必学APP数据抓取实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...
随机推荐
- android activity启动的时候隐藏软键盘
1.概述 android如果界面有EditText之类的跳软键盘的控件 在跳转到该界面是默认会跳出软键盘的. 更何况有些需求要直接需要获取焦点 <requestFocus /> 如果是E ...
- JVM的生命周期——JVM之二
一.首先分析两个概念 JVM实例和JVM执行引擎实例 (1)JVM实例对应了一个独立运行的java程序——进程级别 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程 ...
- Arduino红外遥控系列教程2013——发射与接收
教程一:红外接收教程本教程共四步操作,将教大家如何收集电视红外遥控器的编码 视频链接:http://v.youku.com/v_show/id_XNTE2NjQ5NTcy.html 第一步:电路连接, ...
- IE9 "CSS 因 Mime 类型不匹配而被忽略“问题
写页面的时候在chrome,fireforks等页面上显示正常,但是换成IE9之后就完全没有样式了.IE真是个奇葩的怪胎.它的报错信息是’CSS 因 Mime 类型不匹配而被忽略‘,也就是说所有的.c ...
- 链表k个节点反向
问题: 以k个元素为一组,反转单向链表.比如: 输入: 1->2->3->4->5->6->7->8->null and k = 3 输出:3-> ...
- linux服务器开发浅谈
[开发前准备] 在进行linux服务器开发之前,必须很清楚地了解所开发的对象需要考虑的相关问题比如:功能架构:提供服务的模块体系结构稳定性:服务器的出core率,内存泄露情况性能:请求与返回的速度与正 ...
- hdu 1300 Pearls(dp)
Pearls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- POJ 2420 A Star not a Tree? (计算几何-费马点)
A Star not a Tree? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3435 Accepted: 172 ...
- Slf4j的包冲突
异常信息:Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLog ...
- eclipse自动提示类型的作用
eclipse的自动提示功能确实十分好用,但是只是笼统的都勾上了,所有会有好多重复项,看着很眼疼. 今天就稍微研究了下,略微知道了几个类型的作用: 序号 类型 大体的中文意思 作用 1 Java Ty ...