用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开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...
随机推荐
- 混合使用Azure LB和ILB访问相同web服务(3)
接下来我们来配置Azure Load balancer,就是面向公网的负载均衡器: 1.在该测试中,为了保持内网访问和外网访问一样的体验,本地端口和public端口和ILB一样,同样是80: PS C ...
- javascript对象继承的实现
现在有两个对象,需要实现Chinese类型对象对Person类型对象的继承. 这里分两部分,属性和方法. 属性可以直接用构造函数的方法实现继承,而方法则要通过原型链来实现继承. 先解释什么是原型链,每 ...
- 复习完毕STM32开发板
经过半个晚上的折腾,终于复习了STM32开发板,并使用ST官方库调试完毕一个printf重定向到串口的程序,3.5的库同以前的库不大一样,不过最终搞好了可以睡觉了,还可以睡7个小时. ...
- DotNet 资源大全(Awesome最新版)
发表时间:2016-09-20 21:34:58 编辑:机器猫 阅读:136次 目录 API 应用框架(Application Frameworks) 应用模板(Application T ...
- TComponent与String的转换(得到控件的DFM格式的描述)
现看下面这两个方法,把一个TComponent做成String,再就是把String转成TComponent function ComponentToStringProc(Component: TCo ...
- javascript第十六课:动态注册事件
直接给dom元素添加动态事件,如: document.getelementbyid('#id').onclick=function(){ 方法体! };
- 网络视频传输的服务质量(QoS)
QoS(Qualityof Service)服务质量,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术.在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比如We ...
- Windows XPE 安装
to liuxiyao: 出现这样的问题我推断是由于系统有一些必须的dll类库没有被build进系统中,你在构建时多加入一些系统组件试试.(我想通过评论发可是发了5.6遍CSDN没反应,就写到这里吧, ...
- javascript——touch事件介绍与实例演示
分类: javascript2014-02-12 16:42 1742人阅读 评论(0) 收藏 举报 touch事件touchmovetouchstarttouchend 前言 诸如智能手机和平板 ...
- VS2010中查询替换使用
MSDN:http://msdn.microsoft.com/zh-cn/library/afy96z92.aspx 例子: