簡體   English   中英

在python中格式化/顯示列表

[英]Formatting/Displaying list in python

我是python的新手,我有一個運行中的代碼,該代碼從Web服務中提取數據並將其放在列表中,然后將其寫入文本文件中。 當我運行此代碼並打開文本文件時,數據是連續的。 我在文本文件的每一行中都需要類似的內容,它將顯示5個元素,並轉到下一行並編寫下5個元素,依此類推。 希望您能對此有所幫助或提出其他建議。 這是代碼。

f = open("test.txt", "w")

for item in test:
    f.write("%s    |    " % item)
f.close()

結果看起來像這樣:

data1, data2, data3, data4, data5, data6, data7, data8......................

應采用以下格式:

data   |   data2   |   data3   |   data4   |
data5  |   data6   |   data7   |   data8   |
data9  |   data10  |   data11  |   data12  |

希望我能提供您的意見。 謝謝!

這些字符不在列表 ,他們榜上有名。

>>> print ''.join(['foo', 'bar', 'baz'])
foobarbaz

正如@Ignacio所說,您需要更改打印列表的方式。

for line in list_s:
    # f.write("%s\n" % line) 
    f.write(''.join(line))

如果要將其顯示在表格中,則可以像這樣格式化每一行:

>>> print '{0:10s} {1:10s} {2:10s}'.format('foo', 'bar', 'baz')
foo        bar        baz       

或用線條:

>>> print '{0:10s} | {1:10s} | {2:10s}'.format('foo', 'bar', 'baz')
foo        | bar        | baz    

有關更多信息,請參見Python 輸入和輸出文檔

for i, item in enumerate(test):
    if i and i % 4 == 0:
        f.write("\n")
    f.write("%-9s|   " % item)

您怎么稱呼“特殊字符”? 您所擁有數據的編碼是什么? 在繼續之前,重要的是您必須了解什么是編碼,什么是unicode,並且所得到的信息和數據不限於英語中主要使用的26個字母。 查看這篇文章以了解它。

也就是說,Python可以使用您選擇的編碼(甚至是ASCII)對數據進行編碼,因此您只能獲得32-127個字符,而根本沒有“陌生人”字符(如ã,ç,É),或者可以對數據進行編碼在utf-8中可以使用我們在地球上使用的整個字符數組。 但是,如果您只能“編碼” Unicode數據(如果使用編碼字符串方法,Python會嘗試先將字節字符串隱式轉換為unicode)-因此,無論如何,您確實必須知道數據源的編碼。 一旦將數據解碼為unicode(在正在運行的程序內部),就可以將其編碼為所需的輸出(例如ASCII或“ quopri_codec”),並在調用時將“ errors”關鍵字參數設置為“ ignore”或“ xmlcharrefreplace”進行編碼。

為了更好地理解它,請查看Python的編解碼器文檔

例如,假設您的輸入數據是用iso8859_15編碼的(又名latin1或cp1252 put或take 2個char定義),那么您的意思就是禁止顯示任何非英語字符:

s = client.service.GetData('data1')
s = s.decode("iso88159_15").encode("ASCII", errors="ignore")
sr = '<root>%s</root>' % s
root = ET.fromstring(sr)

Otoh,因為您正在編碼xml,所以將xml引用放置到您不想處理的字符上應該不會受到傷害-(因為編碼為utf-8可能不會受到傷害):

s = s.decode("iso88159_15").encode("ASCII", errors="xmlcharrefreplace")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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