【发布时间】:2011-09-26 10:29:03
【问题描述】:
基本上我使用 python cron 从网络读取数据并将其以以下形式放置在 CSV 列表中:
.....
###1309482902.37
entry1,36,257.21,16.15,16.168
entry2,4,103.97,16.36,16.499
entry3,2,114.83,16.1,16.3
entry4,130.69,15.6737,16.7498
entry5,5.20,14.4,17
$$$
###1309482902.37
entry1,36,257.21,16.15,16.168
entry2,4,103.97,16.36,16.499
entry3,2,114.83,16.1,16.3
entry4,130.69,15.6737,16.7498
entry5,5.20,14.4,17
$$$
.....
我的代码基本上是进行正则表达式搜索并遍历 ### 和 $$$ 之间的所有匹配项,然后逐行遍历每个匹配项,取每一行并用逗号分隔。如您所见,有些条目有 4 个逗号,有些有 5 个。那是因为我很笨,没有意识到网络源将逗号放在它的 4 位数字中。浏览器
entry1,36,257.21,16.15,16.168
应该是真的
entry1,36257.21,16.15,16.168
我已经收集了很多数据,不想重写,所以想了一个繁琐的解决方法。有没有更 Pythonic 的方式来做到这一点?
===
contents = ifp.read()
#Pull all entries from the market data
for entry in re.finditer("###(.*\n)*?\$\$\$",contents):
dataSet = contents[entry.start():entry.end()]
dataSet = dataSet.split('\n');
timeStamp = dataSet[0][3:]
print timeStamp
for i in xrange(1,8):
splits = dataSet[i].split(',')
if(len(splits) == 5):
remove = splits[1]
splits[2] = splits[1] + splits[2]
splits.remove(splits[1])
print splits
## DO SOME USEFUL WORK WITH THE DATA ##
===
【问题讨论】:
-
Pythonic 的方式是首先使用
csv。 运行