2015-05-18 41 views
-1

所以我寫了一個將元組插入到.csv文件的程序。這是代碼:Python和CSV:將所有東西都輸出到一行

with open('data.csv','a') as out: 

     csv_out=csv.writer(out) 
     #csv_out.writerow(['Restaurant Name','Change']) 
     for x, y in zip(arrayForInitialSpots, arrayForChosenSpots): 
      csv_out.writerow(x+y) 

而且因爲它輸出正常工作:

Café A,0,Café B,0 
Restaurant A,0,Restaurant B,0 
Restaurant C,0,Restaurant D,0 
E's Place,0,F's Restaurant,0 

但我想要的是上面寫在一個單行,所以:

Café A,0,Café B,0,Restaurant A,0,Restaurant B,0,Restaurant C,0,Restaurant D,0,E's Place,0,F's Restaurant,0 

我該怎麼做呢?我試圖.format()r \ n \角色,但它仍然沒有做我想做的事情。有什麼建議麼?謝謝!

+1

添加您的輸入數據 –

回答

1

CSV模塊的主要目的是以 以表格形式獲取結果。如果你不希望這樣做 剛剛跳過csv模塊完全,並輸出與write直接到一個文件:

with open('data.csv','a') as out: 
    starting = True 
    for x, y in zip(arrayForInitialSpots, arrayForChosenSpots): 
      for item in (x + y): 
       if not starting: 
       out.write(", ") 
       starting = False    
       out.write(item + ", ") 

- 然而,CSV可以做其他的好東西,像正確逃逸報價 文本數據本身。如果你需要在執行前輸出這些功能,那麼就 壁球所有的數據到一個列表:

data = [] 
for x, y in zip(arrayForInitialSpots, arrayForChosenSpots): 
    data.extend(x + y) 
with open('data.csv','a') as out: 
    csv.writer(out).writerow(data) 

NB:在這個問題從你的樣品輸出數據和片段,我不能告訴如果您希望「y」中的值由逗號「a」中的逗號分隔 - 只需修改data.append表達式(可能使用兩個data.append調用)以滿足您的需求。

更新:更改爲正確acomodate O.P.數據詳見註釋。 (即用「延伸」,而不是在所述第二片段「追加」,並且在第一等同變化)

+0

嘿,所以我嘗試了上面的,但現在我的數據出現在一個非常醜陋的方式。我認爲這是因爲元組的本質,但無論如何,這裏有一個片段:「(u」「Restaurant A」「,0,u」「Restaurant B」「,0)」,「(u'Restaurant C',0 ,u'Restaurant C',0)「,」(u「」Restaurant D「」,0,u「」Restaurant D「」,0)「,」(u「」Restaurant E「」,0,u「」餐廳E「」,0)「,」(u'Restaurant F',0,u'Restaurant F',0)「,」(u'Restaurant G',0,u'Restaurant G',0)「, (u'Restaurant H',0,u'Restaurant H',0)「,」(u'Restaurant I',0,u'Restaurant I',0)「建議? –

+0

對不起 - inddeed - 你的x和y都是2元組 - 我的例子是它們將它們放在一起構成一個4元組,然後在這兩個片段中計算爲單個數據元素。這可以通過使用'data.extend'而不是'data.append'來解決。 (我會在上面解決它) – jsbueno

0
with open('data.csv','a') as out: 
    out.write(', '.join(x+y for x, y in zip(arrayForInitialSpots, arrayForChosenSpots))) 
-1

使用lineterminator參數傳遞給作家類

import sys 
import csv 

W = csv.writer(sys.stdout, lineterminator=",") 
W.writerow(["a", "b", "c"]) 
W.writerow(["d", "e", "f"]) 

這有一個缺點,因爲輸出流以','結尾,但在其他方面可以像您所希望的那樣工作。

相關問題