2012-12-10 40 views
0

編輯:感謝回答傢伙,得到我需要的!從文本文件中獲取數據並將其作爲一個.csv文件寫入python

基本上我試圖拿我存儲在我的文本文件中,我試圖寫入.csv文件。在我的文件中存儲了我已存儲的推文,並且我試圖在我的.csv文件的每個單元格中都有一條推文。

現在,它只採取一個推文,並創建一個.csv文件,我需要它採取所有這些。任何幫助是極大的讚賞。這是我到目前爲止。

with open('reddit.txt', 'rb') as f: 
reader = csv.reader(f, delimiter=':', quoting = csv.QUOTE_NONE) 
for row in reader: 
    print row 


    cr = csv.writer(open('reddit.csv', 'wb')) 
    cr.writerow(row) 
+3

你正在用每一行打破reddit.csv。你應該在for循環之前打開它。不要忘記在循環之後關閉它。 –

回答

4

你需要在循環外部創建作者:

with open('reddit.txt', 'rb') as input_file: 
    reader = csv.reader(input_file, delimiter=':', quoting = csv.QUOTE_NONE) 

    with open('reddit.csv', 'wb') as output_file: 
     writer = csv.writer(output_file) 

     for row in reader: 
      writer.writerow(row) 

這裏雖然它可能是更清潔,打開文件,而無需with

input_file = open('reddit.txt', 'rb') 
output_file = open('reddit.csv', 'wb') 

reader = csv.reader(input_file, delimiter=':', quoting=csv.QUOTE_NONE) 
writer = csv.writer(output_file) 

for row in reader: 
    writer.writerow(row) 

input_file.close() 
output_file.close() 

或者你可以仍然使用with,只是有一條很長的路線:

with open('reddit.txt', 'rb') as input_file, open('reddit.csv', 'wb') as output_file: 
    reader = csv.reader(input_file, delimiter=':', quoting = csv.QUOTE_NONE) 
    writer = csv.writer(output_file) 

    for row in reader: 
     writer.writerow(row) 
+0

在2.7/3.x中,你可以使用open('reddit.txt','rb')作爲input_file,open('reddit.csv','wb')作爲output_file:'來減少縮進(儘管這條線很長)。我認爲即使縮進是令人討厭的,在'with'中也值得使用它,只是爲了保證關閉時的正確行爲。 – Dougal

+0

@Dougal:是的,我不確定是否有一條很長的路線比擁有深度嵌套塊更好或更差。我也會添加它。 – Blender

0

cr = csv.writer(open('reddit.csv', 'wb'))位於for循環內部。您需要後

reader = csv.reader(f, delimiter=':', quoting = csv.QUOTE_NONE)

打開的文件只需一次,放置此行,然後寫它,你在每個循環迭代一樣。

相關問題