1 为什么需要这个转换程序
数据量大到了一定程度,用手工转换费时费力,在这种情况下,必须依靠程序来快速地解决,以便于高效率的工作。显然,当数据量只有2个短行的时候,是不需要写个专门的程序处理的。
2 问题描述
转换前的数据格式是这样的,将该内容命名为TestDataBeforeTransfer.txt:
method: algorithm 1
20:
4 0.835
5 0.508
6 0.834
7 0.514
8 0.516
9 0.688
10 0.647
11 0.415
12 0.502
13 0.659
14 0.589
15 0.416
16 0.566
17 0.743
50:
4 0.835
5 0.508
6 0.834
7 0.514
8 0.516
9 0.688
10 0.647
11 0.415
12 0.502
13 0.659
14 0.653
15 0.484
16 0.619
17 0.743
times elaped: 10130
转换后的格式要求是这样的:
[0.835, 0.508, 0.834, 0.514, 0.516, 0.688, 0.647, 0.415, 0.502, 0.659, 0.589, 0.416, 0.566, 0.743]
[0.835, 0.508, 0.834, 0.514, 0.516, 0.688, 0.647, 0.415, 0.502, 0.659, 0.653, 0.484, 0.619, 0.743]
3 解决方法
3.1 程序代码
根据上面的问题描述,编写了以下的python程序,即可完成数据格式转换的任务,可将该程序命名为dformatTrans.py:
f = open('TestDataBeforeTransfer.txt','r')
lines = f.readlines()
f.close()
rbTag = False
vCount = 0
vValues = []
for line in lines:
if line[-2] == ':':
rbTag = True
if rbTag == True and vCount < 14 and not line[-2] == ':' and not line[0] == 't':
vCount +=1
line = line[2:]
line = line[:-1]
vValues.append(float(line))
else:
vCount = 0
if not len(vValues) ==0:
print vValues
vValues = []
程序的使用:将代码和数据文件放在同一个文件夹下,在该文件夹下运行cmd console程序,然后输入以下指令:
python dformatTrans.py > result.txt
在文件result.txt中即会出现转换后的结果。
3.2 为什么没有用re包
因为转换前的数据格式内容简单,没有什么复杂的字符,所以不需要使用正则表达式这样高级的东西。
4 总结
能用电脑帮忙处理的事情,千万不要使用手工来做。这是关系到效率的问题,高效率的工作就意味着能够在同一时间里收获更多。