用Python写了一个数据格式转换小程序

44 篇文章 0 订阅
7 篇文章 0 订阅

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 总结

能用电脑帮忙处理的事情,千万不要使用手工来做。这是关系到效率的问题,高效率的工作就意味着能够在同一时间里收获更多。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值