我有几个包含字符串和浮点数作为其元素的列表。
import numpy as num
COLUMN_1 = ['KIC 7742534', 'Variable Star of RR Lyr type' , 'V* V368 Lyr',
'KIC 7742534', '4.0', '0.4564816']
COLUMN_2 = ['KIC 76', 'Variable Star' , 'V* V33 Lyr',
'KIC 76', '5.0', '0.45']
DAT = num.column_stack((COLUMN_1, COLUMN_2))
num.savetxt('SAVETXT.txt', DAT, delimiter=' ', fmt='{:^10}'.format('%s'))
运行此文件时得到的输出如下:
KIC 7742534 , KIC 76
Variable Star of RR Lyr type , Variable Star
V* V368 Lyr , V* V33 Lyr
KIC 7742534 , KIC 76
4.0 , 5.0
0.4564816 , 0.45
理想的输出看起来像这样(包括对齐的标题)
#ELEMENT1 ELEMENT2
KIC 7742534 , KIC 76
Variable Star of RR Lyr type , Variable Star
V* V368 Lyr , V* V33 Lyr
KIC 7742534 , KIC 76
4.0 , 5.0
0.4564816 , 0.45
如果字符串没有定义最大宽度,我怎么能得到这样的输出(带有对齐的标题)。我已经尝试修改字符串的格式(fmt),但到目前为止还没有运气。
-Thanks!
答案 0 :(得分:2)
您需要计算输出最长行的最大字符串长度(或输入取决于您的查看方式),这类似于
的方法max_len = max(max(map(len,l)) for l in zip(COLUMN_1,COLUMN_2))
会实现。之后,您需要根据max_len的值动态更改fmt
参数,您可以这样做:
fmt=('{:^%d}' % max_len).format('%s')
以下非numpy示例显示了预期的输出:
with open('ofile.txt','w+') as f:
max_len = max(max(map(len,l)) for l in zip(COLUMN_1,COLUMN_2))
for line in zip(COLUMN_1,COLUMN_2):
f.write(','.join(('{:<%s}' % (max_len)).format(e) for e in line)+'\n')
生成包含以下内容的文本文件ofile.txt
KIC 7742534 ,KIC 76
Variable Star of RR Lyr type,Variable Star
V* V368 Lyr ,V* V33 Lyr
KIC 7742534 ,KIC 76
4.0 ,5.0
0.4564816 ,0.45