[英]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.