python文本数据处理_用python处理文本数据 学到的一些东西-程序员宅基地

技术标签: 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的默认编码,可以直接在程序中声明:

importsys

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. 文件重命名

importos

os.rename(src,dst)

src——要修改的文件名,dst——修改后的文件名。

重命名时,如果新文件名已经存在,就会报‘WindowsError: [Error 183]’ 错误。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39566864/article/details/110051848

智能推荐

Python小游戏开发-贪食蛇捕蛙-程序员宅基地

文章浏览阅读284次,点赞5次,收藏6次。每个程序员都有一个游戏梦,都想开发一款让别人爱不释手的游戏。游戏开发引擎很多像Unity 3D,cocos2d,白鹭(Egret),LayaBox,threeJs等等。一个偶然的机会,看到gitee上举办趣味魔改贪吃蛇游戏,出于程序员的自信心的驱使,加上爱折腾的心思便果断报名参加了。今天和大家一起看看Python小游戏的开发。Python有一个游戏开发的库pygame,可以非常简单方便地开发游戏。先看一下游戏运行的效果:游戏有几个角色1. 贪吃蛇(Snake)2. 青蛙(Food)

怎么在unity3D工程中导入Newtonsoft.Json_unity newtonsoft.json-程序员宅基地

文章浏览阅读3.7k次。怎么在unity3D工程中导入Newtonsoft.Json_unity newtonsoft.json

大文件切片上传,断点续传_分片上传文件, waiting for server response 耗时太长-程序员宅基地

文章浏览阅读103次。分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(我们称之为Part)来进行分别上传,文件切片和核心是使用 Blob 对象的 slice 方法blob.slice(startByte, endByte),上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件。文件妙传,秒传指的是文件在传输之前计算其内容的散列值,也就是 Hash 值,将该值传到后台,如果后台存在 Hash 值一致的文件,认为该文件上传完成。3、由于各种网络原因上传失败,且失败之后需要从头开始。_分片上传文件, waiting for server response 耗时太长

博图sodt定时器的用法_西门子plc定时器指令 西门子S7-1200系列PLC定时器指令-程序员宅基地

文章浏览阅读4.9k次。定时器指令是在PLC程序设计中非常常见的一种指令,S7-1200系列PLC的定时器的指令格式及使用方式都不同于S7-200系列PLC。S7-1200系列PLC的采用的是IEC标准的定时器指令,用户程序中可以使用的定时器数仅受CPU存储器容量限制,每个定时器均使用16个字节的 IEC_TIMER 数据类型的DB结构来存储功能框或线圈指令顶部指定的定时器数据,如下图所示。S7-1200系列PLC的定时..._sodt

hibernate实体属性为布尔类型时命名应注意的地方-程序员宅基地

文章浏览阅读237次。一个对象中的属性有布尔类型时,命名的时候尽量不要把前缀定为is,因为在使用HQL查询的时候,属性必须去掉is前缀,然后小写首字母才能查询出结果,否则查询不到任何数据;例如,有一个User对象,里面有一个标识这个用户是否激活的属性,然后将其命名为isActivated,在查询的时候,根据HQL的规则,使用 user.isActivated = true去查询,将得到错误的提示:isActivat..._hibernate不能包含is

MapReduce中文翻译_for v in values: result += v-程序员宅基地

文章浏览阅读226次。MapReduce: 超大机群上的简单数据处理 ..._for v in values: result += v

随便推点

java开发C语言编译器:JVM 的基本操作指令介绍及其程序运行原理_jvm和c语言-程序员宅基地

文章浏览阅读1.2k次。本文介绍了java虚拟机所能运行的基础指令,同时讲解了虚拟机是如何基于堆栈和队列配合相关基础指令,运行字节码程序的。最后我们给出了一段C语言代码,并详细讲解了我们的编译器如何把代码编译成能在java虚拟机上执行的java汇编语言_jvm和c语言

图像算法:Difference of Gaussian(DOG) 高斯函数差分-程序员宅基地

文章浏览阅读2.5w次,点赞17次,收藏103次。概念Difference of Gaussian(DOG)是高斯函数的差分。它是可以通过将图像与高斯函数进行卷积得到一幅图像的低通滤波结果,即去噪过程,这里的Gaussian和高斯低通滤波器的高斯一样,是一个函数,即为正态分布函数。同时,它对高斯拉普拉斯LoG的近似,在某一尺度上的特征检测可以通过对两个相邻高斯尺度空间的图像相减,得到DoG的响应值图像。基本理论首先,高斯函数..._difference of gaussian

数据库学习笔记第一弹——MySQL8.0和MySQL5.7的下载、安装与配置(图文详解步骤2022)-程序员宅基地

文章浏览阅读1k次,点赞10次,收藏9次。数据库学习笔记第一弹——MySQL8.0和MySQL5.7的下载、安装与配置

C语言枚举类 口袋中有红、黄、蓝、白、黑5种颜色的球若干个_利用枚举类型编写程序:口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋-程序员宅基地

文章浏览阅读3.2k次。口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况#include<stdio.h>int main(){ enum Color {red, yellow, blue, white, black};//枚举类声明,分别对应0,1,2,3,4 enum Color i, j, k, pri..._利用枚举类型编写程序:口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋

php 心跳检测,Swoole 实例四(心跳检测)-程序员宅基地

文章浏览阅读1k次。服务器端 server.php

windows学习历程-IPC之互斥对象_windows ipc 互斥锁-程序员宅基地

文章浏览阅读458次。利用互斥对象实现线程的互斥对于互斥对象的操作包括:(1)创建互斥对象(CreateMutex)CreateMutex函数功能: 创建互斥量来确保一个线程独占对一个资源的访问。互斥量对象包含一个使用计数、线程ID以及一个递归计数。线程ID用来标识当前占用这个互斥量的是系统中的那个线程,递归计数表示这个线程占用该互斥量的次数。互斥量可以确保正在访问内存块中的任何线程会独占对_windows ipc 互斥锁

推荐文章

热门文章

相关标签