Как мне получить мой вывод в формате столбца? - PullRequest
0 голосов
/ 30 ноября 2011

Я очень новичок в Python и у меня есть вопрос. В настоящее время я использую это для подсчета времени между отправкой сообщения и входящим сообщением. Полученное время начала, разница времени и уникальный идентификатор затем представляются в файле. Как я могу сделать вывод в формате столбца с этими тремя качествами?

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  ]

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Чтобы записать его в файл 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 в своем любимом программном обеспечении для электронных таблиц.*

0 голосов
/ 30 ноября 2011

Замените это:

print list(time_deltas(INFILE))

на:

print (',').join(list(time_deltas(INFILE)))

для формата CSV, который можно импортировать в электронные таблицы для отображения в формате столбца.

Вытакже можно сделать что-то вроде:

print "%10s %10s %10s"%list(time_deltas(INFILE))

, поэтому каждый столбец имеет фиксированную ширину в 10 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...