2013-03-04 79 views
1

我有一個 - 可能 - 微不足道的問題,一直在困擾着我一段時間,我還沒有找到答案。我的許多腳本都會讀取一些文件,比較它們的值並將它們保存在列表或字典中,然後我可以編寫某種輸出文件。我總是這樣做,我遍歷列表並將單個項目寫到我的輸出中,並用製表符,逗號或換行符分隔。我總是想知道的是,如何防止列表中最後一項打印出現分隔符。用Python編寫列表項到文本文件

下面是一個例子:

dict1 = {a: [1,2,3], b: [4,5,6], c: [7,8,9]} 
for key in dict1: 
    outfile.write(key +": ") 
    for item in dict1[key]: 
     outfile.write(str(item) +", ") 
    outfile.write("\n") 

輸出會再看看這樣的:

a: 1, 2, 3, 
b: 4, 5, 6, 
c: 7, 8, 9, 

如何避免去年 「」?

回答

3

使用str.join方法和列表comprehesion:

for key, value in dict1.iteritems(): 
    outfile.write(key +": ") 
    outfile.write(', '.join([str(item) for item in value])) 
    outfile.write("\n") 
+0

這是有效的,但是對於OP來說可能是一個驚喜,它不一定是按鍵順序......我得到a,c,b ......(但是他們沒有指定它是一個明確的要求) – 2013-03-04 14:02:31

+0

很酷,謝謝!我新的它會很簡單。 :-) – 2013-03-04 14:03:30

+0

@JonClements謝謝你的評論。這是因爲列表理解還是僅僅因爲詞典不能維持秩序? – 2013-03-04 14:05:11

1

關於使用標準庫CSV模塊是什麼?

它會搞定,再加上必要的escapint(如果你的價值觀之一包括什麼逗號?)

(然後,當然,一般情況下,使用string.join(list)沒有尾部分隔適當加入)

+0

我沒有想到,因爲我很少需要CSV格式。我會看一下。 :-) – 2013-03-04 14:10:28