本文实例讲述了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文本处理之按行处理大文件的方法的使用技巧和注意事项,需要的朋友参考一下 以行的形式读出一个文件最简单的方式是使用文件对象的readline()、readlines()和xreadlines()方法。 Python2.2+为这种频繁的操作提供了一个简化的语法——让文件对象自身在行上高效迭代(这种迭代是严格的向前的)。 为了读
本文向大家介绍使用Python处理Excel表格的简单方法,包括了使用Python处理Excel表格的简单方法的使用技巧和注意事项,需要的朋友参考一下 Excel 中的每一个单元,都会有这些属性:颜色(colors)、number formatting、字体(fonts)、边界(borders)、alignment、模式(patterns) 等等。 xlsxwriter 格式处理,将待添加数据转换
Python 编程可用于处理文本数据以满足各种文本数据分析的要求。 蟒蛇的这种文本处理能力的一个非常重要的应用领域是 NLP(自然语言处理)。
我尝试在给定的文本文件中连接两行文本,并将输出打印到控制台。我的代码非常复杂,有没有更简单的方法通过使用文件处理基本概念来实现这一点?
本文向大家介绍Python处理文本文件中控制字符的方法,包括了Python处理文本文件中控制字符的方法的使用技巧和注意事项,需要的朋友参考一下 控制字符 控制字符(Control Character),或者说非打印字符,出现于特定的信息文本中,表示某一控制功能的字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、E
问题内容: 如果我举个例子,也许我能最好地解释:假设以下内容-我认为这是XML在Web服务中(错误)使用的一个很好的例子- 是我从http请求到http://www.google的响应.com / ig / api?weather = 94043 加载/解析此类文档后,我希望能够像说的那样简单地访问信息 要么 从我到目前为止所看到的,这似乎是最接近我梦想的。但这还不存在,使用XML时仍然有些麻烦。