簡體   English   中英

編寫空格分隔的文本以使其在Python#2中易於閱讀

[英]Writing white-space delimited text to be human readable in Python #2

我想將2D numpy數組寫入人類可讀的文本文件格式。 我遇到了之前問過的這個問題,但它只指定了與數組中每個元素關聯的相等數量的空間。 在其中所有元素都以10個空格隔開。 我想要的是數組中每列的不同數量的空間。

編寫空格分隔的文本以使其在Python中易於閱讀

例如,我想要第一列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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM