首页 > 解决方案 > Numpy savetxt - 带有格式的制表符分隔文本

问题描述

我想格式化制表符分隔的文本,以便可以轻松地将其导入 Excel。我看到的其他帖子似乎没有解决这个特定问题。文档建议我应该使用 option 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

标签: pythonnumpy

解决方案


推荐阅读