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 相关文章推荐
Python中元组,列表,字典的区别
May 21 Python
python中kmeans聚类实现代码
Feb 23 Python
基于python进行桶排序与基数排序的总结
May 29 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
Tensorflow中的dropout的使用方法
Mar 13 Python
python 日志 logging模块详细解析
Mar 31 Python
Python通过len函数返回对象长度
Oct 22 Python
Python模拟登录requests.Session应用详解
Nov 17 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 echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
php array的学习笔记
2012/05/16 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
Python最小二乘法矩阵
2019/01/02 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
欢迎标语大全
2014/06/21 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript