[英]Writing white-space delimited text to be human readable in Python #2
我想將2D numpy數組寫入人類可讀的文本文件格式。 我遇到了之前問過的這個問題,但它只指定了與數組中每個元素關聯的相等數量的空間。 在其中所有元素都以10個空格隔開。 我想要的是數組中每列的不同數量的空間。
例如,我想要第一列7個空格,第二列10個空格,第三列4個空格,依此類推。是否有類似於numpy.savetxt(filename,X,delimiter =',',fmt =' %-10s'),但是我說的是“%-7s,%-10s,%-4s”等而不是“%-10s”?
謝謝
這是一個看起來像(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***
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.