2015-10-13 3 views
0

Каков наилучший способ создания аккуратного вывода в виде таблиц и сохранения его в текстовом файле?Табличный вывод вывода

Прямо сейчас я показываю свой вывод на консоли IPython со следующим кодом, который обеспечивает вывод, как показано на рисунке (1).

outputLine = ["NIST line CG100 CG050 FactoryCal HMFW (nm)-original  (SIGMA)   WCalFunctionDerivatives"] 
for n, line in enumerate(wlines, 1): 
    outputLine.append(" ".join(
     [str(item) for item in [wlines[n-1],peaks[n-1].cg100(), 
     peaks[n-1].cgArb(0.5), 
     wavelengthToPixel(wlines[n-1], 500, wavep), 
     peaks[n-1].getHMFW()/prismpy.wcalfunctionDerivative(results.x, wlines[n-1]), peaks[n-1].getHMFWPixels(), prismpy.wcalfunctionDerivative(results.x, wlines[n-1])]])) 

Figure(1)

Исходя из фона Mathematica, что другие методы можно использовать, чтобы отобразить этот же вывод в аккуратном табличном формате? Заранее спасибо.

+1

Если вы собираетесь анализировать эти данные, вы можете захотеть взглянуть на 'pandas', в котором будут отображаться данные на выходе, но его st rength находится в анализе. – AChampion

+0

@AChampion: Дальнейшего анализа по этим данным нет. Конечные результаты должны быть такими, как показано на рисунке. Тем не менее проверит панды. Вы имеете в виду DataFrame (pandas) исключительно? –

+0

Да, DataFrame будет хранить данные и автоматически конвертировать в строку и выводить на табуляцию на выходе. Но это, вероятно, слишком много для форматирования. Хотя другой SO'er сказал: «Приходите для форматирования, оставайтесь для анализа», который я повторяю здесь. – AChampion

ответ

1

Если вы работаете со списком списков, следующий подход может оказаться полезным:

def col_display(data, file): 
    widths = [0] * len(data[0]) 
    for row in data: 
     widths[:] = [max(widths[index], len(str(col))) for index, col in enumerate(row)] 
    for row in data: 
     output = " ".join(["%-*s" % (widths[index], col) for index, col in enumerate(row)]) 
     print(output)  
     file.write(output + '\n') 

outputLine = ["NIST line", "CG100", "CG050", "FactoryCal", "HMFW (nm)-original", "(SIGMA)", "WCalFunctionDerivatives"] 
wlines = [[123.1234567890] * 7] * 4 
lines = [outputLine] + wlines 

with open('output.txt', 'w') as f_output: 
    col_display(lines, f_output) 

Что бы отобразить следующую команду и создать текстовый файл с тем же содержимым:

NIST line  CG100   CG050   FactoryCal  HMFW (nm)-original (SIGMA)  WCalFunctionDerivatives 
123.123456789 123.123456789 123.123456789 123.123456789 123.123456789  123.123456789 123.123456789   
123.123456789 123.123456789 123.123456789 123.123456789 123.123456789  123.123456789 123.123456789   
123.123456789 123.123456789 123.123456789 123.123456789 123.123456789  123.123456789 123.123456789   
123.123456789 123.123456789 123.123456789 123.123456789 123.123456789  123.123456789 123.123456789 
Смежные вопросы