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 相关文章推荐
centos下更新Python版本的步骤
Feb 12 Python
详解python开发环境搭建
Dec 16 Python
TensorFlow实现简单卷积神经网络
May 24 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
Python实现多线程的两种方式分析
Aug 29 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
基于Python函数和变量名解析
Jul 19 Python
python requests使用socks5的例子
Jul 25 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 Python
教你使用Pandas直接核算Excel中快递费用
May 12 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 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中for循环语句的几种变型
2007/03/16 PHP
PHP file_exists问题杂谈
2012/05/07 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
Git命令之分支详解
2021/03/02 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
js 函数的副作用分析
2011/08/23 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
一篇不错的Python入门教程
2007/02/08 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
python实现简单名片管理系统
2018/11/30 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
小学班主任寄语大全
2014/04/04 职场文书
2014年团委工作总结
2014/11/13 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python