Я хочу отформатировать текст с разделителями табуляции, чтобы я мог легко импортировать его в Excel. Другие сообщения, которые я видел, похоже, не касаются этой конкретной c проблемы. В документации предлагается использовать опцию delimiter = '\t'
. Кажется, что это работает не для формата или отдельного формата, который повторяется, но это не действует, когда каждый столбец имеет отдельный формат. Что мне не хватает? Я нашел решение, поместив \t
в строку формата, но это не должно быть необходимым в соответствии с документацией. Почему функция не работает, как описано?
Вот пример кода:
fn = open('b.dat','w')
fmt0 = '%5.2f'
fmt1 = '%5.1f'*2 + '%6.3f'*2
fmt2 = '%5.1f\t'*2 + '%6.3f\t' + '%6.3f'
b = np.arange(12).reshape(3,4)/3
print('savetxt b simple fmt0, tab delimiter',file=fn)
np.savetxt(fn,b,delimiter='\t',fmt=fmt0)
print('savetxt b fmt1, tab delimiter has no effect ',file=fn)
np.savetxt(fn,b,delimiter='\t',fmt=fmt1)
print('savetxt b fmt2 contains tabs + delimiter',file=fn)
np.savetxt(fn,b,delimiter='\t',fmt=fmt2)
print('savetxt b fmt2 contains tabs, no delimiter',file=fn)
np.savetxt(fn,b,fmt=fmt2)
fn.close()
Я не знаю, как отобразить вкладки здесь, но вывод из этого кода следующее. Вывод с fmt1 не имеет вкладок - опция разделителя не действует.
savetxt b simple fmt0, tab delimiter
0.00 0.33 0.67 1.00
1.33 1.67 2.00 2.33
2.67 3.00 3.33 3.67
savetxt b fmt1, tab delimiter has no effect
0.0 0.3 0.667 1.000
1.3 1.7 2.000 2.333
2.7 3.0 3.333 3.667
savetxt b fmt2 contains tabs + delimiter
0.0 0.3 0.667 1.000
1.3 1.7 2.000 2.333
2.7 3.0 3.333 3.667
savetxt b fmt2 contains tabs, no delimiter
0.0 0.3 0.667 1.000
1.3 1.7 2.000 2.333
2.7 3.0 3.333 3.667