python简单文本处理的方法


Posted in Python onJuly 10, 2015

本文实例讲述了python简单文本处理的方法。分享给大家供大家参考。具体如下:

由于有多线程的影响,c++项目打印出来的时间顺序不一致,导致不太好在excel中统计,故使用python写了段脚本来解决之。涉及到如下方面

1. txt文本的读取,utf8的处理
2. 字符串的基本操作
3. dict的基本操作
4. list(数组)的基本操作

#!/usr/bin/python
#print "Hello World"
str_seperator = "=================================================================================="
timePointName = ["enter OpenNextImage at",#0
     "enter OpenImage at",#1
     "In OpenImage send On_ImageRefresh at",#2
     "leave OpenImage at",#3
     "leave OpenNextImage at",#4
     "enter LoadImage at",#5
     "decode began at",#6
     "enter DrawClient at",#7
     "leave DrawClient at",#8
     "decode end at",#9
     "in LoadImage send On_ImageRefresh at",#10
     "leave loadImage at",#11
     "second enter DrawClient at",#12
     "second leave DrawClient at" #13
     ]
itemNumber= 0;
avgTotal = 0; #13-0
avgFirstDraw = 0; #8-2
avgLoadImage = 0; #11-5
avgSecondDraw = 0;#13-10
fobj = open("F:\log.txt","r")
imageTimeSta = {}
dic = {}
path = ""
idx = 0
for line in fobj:
  idx = idx + 1
  if idx == 1:
    line = line[3:]
  else:
    pass
  line = line.strip()
  line = line.decode("utf-8").encode("gbk")
  if line == str_seperator:
    if path == "":
      pass
    else:
      imageTimeSta[path] = dic
    dic = {}
    path = ""
    continue
  tabIndex = line.find('\t')
  if tabIndex == -1:
    path = line
    print path
    continue
  tabLastIndex = line.rfind('\t')
  name = line[0:tabIndex]
  time = int(line[tabLastIndex + 1:])
  if name in dic:
    dic["second " + name] = time
  else:
    dic[name] = time
fobj.close()
itemNumber = len(imageTimeSta)
keys = imageTimeSta.keys();
for (k,dic) in imageTimeSta.iteritems():
  avgTotal += dic[timePointName[13]] - dic[timePointName[0]];
  avgFirstDraw += dic[timePointName[8]] - dic[timePointName[2]];
  avgLoadImage += dic[timePointName[11]] - dic[timePointName[5]];
  avgSecondDraw += dic[timePointName[13]] - dic[timePointName[10]];
print 'avgTotal',avgTotal / float(itemNumber)
print 'avgFirstDraw',avgFirstDraw / float(itemNumber)
print 'avgLoadImage',avgLoadImage / float(itemNumber)
print 'avgSecondDraw',avgSecondDraw / float(itemNumber)
#print imageTimeSta

log.txt文件如下:

enter OpenNextImage at  5124
D:\pics\测试图片\解码性能对比用图\jpeg\较小图\2.JPG
enter OpenImage at  5124
In OpenImage send On_ImageRefresh at  5124
enter LoadImage at  5124
leave OpenImage at  5124
leave OpenNextImage at  5124
decode began at  5124
enter DrawClient at  5140
leave DrawClient at  5155
decode end at  5265
in LoadImage send On_ImageRefresh at  5265
leave loadImage at  5265
enter DrawClient at  5280
leave DrawClient at  5327
==================================================================================
enter OpenNextImage at  6280
D:\pics\测试图片\解码性能对比用图\jpeg\较小图\3.JPG
enter OpenImage at  6280
In OpenImage send On_ImageRefresh at  6280
enter LoadImage at  6280
leave OpenImage at  6296
leave OpenNextImage at  6296
decode began at  6296
enter DrawClient at  6296
leave DrawClient at  6312
decode end at  6437
in LoadImage send On_ImageRefresh at  6437
enter DrawClient at  6437
leave loadImage at  6452
leave DrawClient at  6499
==================================================================================
enter OpenNextImage at  7265
D:\pics\测试图片\解码性能对比用图\jpeg\较小图\4.JPG
enter OpenImage at  7265
In OpenImage send On_ImageRefresh at  7265
leave OpenImage at  7265
leave OpenNextImage at  7265
enter LoadImage at  7265
decode began at  7265
enter DrawClient at  7265
leave DrawClient at  7296
decode end at  7421
in LoadImage send On_ImageRefresh at  7421
enter DrawClient at  7421
leave loadImage at  7437
leave DrawClient at  7483
==================================================================================
enter OpenNextImage at  8062
D:\pics\测试图片\解码性能对比用图\jpeg\较小图\5.JPG
enter OpenImage at  8062
In OpenImage send On_ImageRefresh at  8062
leave OpenImage at  8062
leave OpenNextImage at  8062
enter LoadImage at  8062
decode began at  8062
enter DrawClient at  8062
leave DrawClient at  8077
decode end at  8202
in LoadImage send On_ImageRefresh at  8202
enter DrawClient at  8202
leave DrawClient at  8265
leave loadImage at  8280
==================================================================================
enter OpenNextImage at  8811
D:\pics\测试图片\解码性能对比用图\jpeg\较小图\6.JPG
enter OpenImage at  8811
In OpenImage send On_ImageRefresh at  8811
leave OpenImage at  8811
leave OpenNextImage at  8811
enter LoadImage at  8811
decode began at  8811
enter DrawClient at  8811
leave DrawClient at  8843
decode end at  8968
in LoadImage send On_ImageRefresh at  8968
leave loadImage at  8968
enter DrawClient at  8968
leave DrawClient at  9030
==================================================================================
enter OpenNextImage at  9515
D:\pics\测试图片\解码性能对比用图\jpeg\较小图\7.JPG
enter OpenImage at  9515
In OpenImage send On_ImageRefresh at  9515
leave OpenImage at  9515
leave OpenNextImage at  9515
enter LoadImage at  9515
decode began at  9530
enter DrawClient at  9530
leave DrawClient at  9546
decode end at  9671
in LoadImage send On_ImageRefresh at  9671
enter DrawClient at  9671
leave loadImage at  9671
leave DrawClient at  9733
==================================================================================
enter OpenNextImage at  10171
D:\pics\测试图片\解码性能对比用图\jpeg\较小图\8.JPG
enter OpenImage at  10171
In OpenImage send On_ImageRefresh at  10171
leave OpenImage at  10171
leave OpenNextImage at  10171
enter LoadImage at  10171
decode began at  10186
enter DrawClient at  10186
leave DrawClient at  10202
decode end at  10311
in LoadImage send On_ImageRefresh at  10311
leave loadImage at  10311
enter DrawClient at  10311
leave DrawClient at  10374
==================================================================================
enter OpenNextImage at  10811
D:\pics\测试图片\解码性能对比用图\jpeg\较小图\9.JPG
enter OpenImage at  10811
In OpenImage send On_ImageRefresh at  10811
enter LoadImage at  10811
leave OpenImage at  10811
leave OpenNextImage at  10811
enter DrawClient at  10811
decode began at  10811
leave DrawClient at  10843
decode end at  10952
in LoadImage send On_ImageRefresh at  10952
leave loadImage at  10952
enter DrawClient at  10952
leave DrawClient at  11030
==================================================================================
enter OpenNextImage at  11452
D:\pics\测试图片\解码性能对比用图\jpeg\较小图\10.JPG
enter OpenImage at  11452
In OpenImage send On_ImageRefresh at  11452
leave OpenImage at  11452
leave OpenNextImage at  11452
enter LoadImage at  11452
decode began at  11452
enter DrawClient at  11468
leave DrawClient at  11483
decode end at  11593
in LoadImage send On_ImageRefresh at  11593
enter DrawClient at  11593
leave loadImage at  11608
leave DrawClient at  11655
==================================================================================
enter OpenNextImage at  12077
enter DrawClient at  12077
leave DrawClient at  12108
==================================================================================
enter OpenNextImage at  13124
D:\pics\测试图片\解码性能对比用图\jpeg\较小图\1.jpg
enter OpenImage at  13124
In OpenImage send On_ImageRefresh at  13124
leave OpenImage at  13124
leave OpenNextImage at  13124
enter LoadImage at  13124
decode began at  13124
enter DrawClient at  13139
leave DrawClient at  13155
decode end at  13358
in LoadImage send On_ImageRefresh at  13358
leave loadImage at  13358
enter DrawClient at  13358
leave DrawClient at  13405
==================================================================================

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Flask框架钩子函数功能与用法分析
Aug 02 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
在服务器上安装python3.8.2环境的教程详解
Apr 26 Python
如何理解Python中的变量
Jun 01 Python
python如何更新包
Jun 11 Python
python中return如何写
Jun 18 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
Python datetime 如何处理时区信息
Sep 02 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 Python
解决python3安装pandas出错的问题
May 20 Python
Pytest中skip skipif跳过用例详解
Jun 30 Python
Python实现把json格式转换成文本或sql文件
Jul 10 #Python
Python中的一些陷阱与技巧小结
Jul 10 #Python
Python中的fileinput模块的简单实用示例
Jul 09 #Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 #Python
python冒泡排序简单实现方法
Jul 09 #Python
python基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 #Python
python简单猜数游戏实例
Jul 09 #Python
You might like
php Undefined index和Undefined variable的解决方法
2008/03/27 PHP
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
详解js的事件处理函数和动态创建html标记方法
2016/12/16 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
tensorflow更改变量的值实例
2018/07/30 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
简单的Python人脸识别系统
2020/07/14 Python
Python函数调用追踪实现代码
2020/11/27 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
焊接专业毕业生求职信
2013/10/01 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
工程合作意向书范本
2015/05/09 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL
Redis基本数据类型Set常用操作命令
2022/06/01 Redis