我想把2Dnumpy数组写成人类可读的文本文件格式。我在前面遇到了这个问题,但它只指定了与数组中的每个元素相关联的相同数量的空间。在它中,所有元素都用10个空格隔开。我想要的是为我的数组中的每一列提供不同数量的空间。
Writing white-space delimited text to be human readable in Python
例如,我希望第一列有7个空格,第二列有10个空格,第三列有4个空格,等等。这和numpy.savetxt有相似之处吗(文件名,X,分隔符= ',',fmt = '%-10s'),但是哪里不是'%-10s‘,而是'%-7s,%-10s,%-4s’等等?
谢谢
发布于 2014-02-17 16:31:55
下面是它的一个示例(Python2&3):
l = [[1,2,3,4], [3,4,5,6]]
for row in l:
print(u'{:<7} {:>7} {:^7} {:*^7}'.format(*row))
1 2 3 ***4***
3 4 5 ***6***格式选项取自http://docs.python.org/2/library/string.html
>>> '{:<30}'.format('left aligned')
'left aligned '
>>> '{:>30}'.format('right aligned')
' right aligned'
>>> '{:^30}'.format('centered')
' centered '
>>> '{:*^30}'.format('centered') # use '*' as a fill char
'***********centered***********'如果您需要一个文件,请执行以下操作:
l = [[1,2,3,4], [3,4,5,6]]
with open('file.txt', 'wb') as f:
f.write(u'\ufeff'.encode('utf-8'))
for row in l:
line = u'{:<7} {:>7} {:^7} {:*^7}\r\n'.format(*row)
f.write(line.encode('utf-8'))该文件的内容为
1 2 3 ***4***
3 4 5 ***6***编码方式为UTF-8。这意味着您的标题中不仅可以包含数字,还可以包含任意字母:☠ ⇗ ⌚ ② ☕ ☃ ⛷
heading = [u'☠', u'⇗', u'⌚', u'②']
with open('file.txt', 'wb') as f:
f.write(u'\ufeff'.encode('utf-8'))
line = '{:<7} {:>7} {:^7} {:*^7}\r\n'.format(*heading)
f.write(line.encode('utf-8'))
for row in l:
line = '{:<7} {:>7} {:^7} {:*^7}\r\n'.format(*row)
f.write(line.encode('utf-8'))
☠ ⇗ ⌚ ***②***
1 2 3 ***4***
2 3 4 ***5***https://stackoverflow.com/questions/21821467
复制相似问题