我是Python的新手并且有一个问题。目前我正在使用它来计算消息消失和消息进入之间的时间。然后,生成的开始时间,时间增量和唯一ID将显示在文件中。我怎么能用这三种品质生成列格式的输出?
def time_deltas(infile):
entries = (line.split() for line in open(INFILE, "r"))
ts = {}
for e in entries:
if " ".join(e[2:5]) == "OuchMsg out: [O]":
ts[e[8]] = e[0]
elif " ".join(e[2:5]) == "OuchMsg in: [A]":
in_ts, ref_id = e[0], e[7]
out_ts = ts.pop(ref_id, None)
yield (float(out_ts),ref_id[1:-1], float(in_ts) - float(out_ts))
INFILE = 'C:/Users/klee/Documents/Minifile.txt'
print list(time_deltas(INFILE))
以下是实际数据的一小部分示例:
61336.206267 - OuchMsg out: [O] enter order. RefID [F25Q282588] OrdID [X1F3500687 ]
答案 0 :(得分:3)
要将其写入CSV文件,您可以使用:
import csv
with open('output_file.csv', 'w') as f:
csv_w = csv.writer(f)
for rec in time_deltas(infile):
csv_w.writerow(rec)
甚至更短:
import csv
with open('output_file.csv', 'w') as f:
csv.writer(f).writerows(time_deltas(infile))
然后在您喜欢的电子表格软件中打开CSV文件。
答案 1 :(得分:0)
替换它:
print list(time_deltas(INFILE))
使用:
print (',').join(list(time_deltas(INFILE)))
用于csv格式,可以导入电子表格以列格式显示。
您还可以执行以下操作:
print "%10s %10s %10s"%list(time_deltas(INFILE))
所以每列都有一个固定的10个字符宽度。