2012-01-18 1860 views
1

這是新的輸入文件格式。我需要使用python自動化替換.csv文件中一列的內容。我也可以使用記事本打開.csv文件並替換列的內容,但文件非常龐大,需要很長時間。使用python替換csv文件中的數據

Name       ID            class Num 
"kanika",""University ISD_po.log";" University  /projects/asd/new/high/sde"","MBA","12" 
"Ambika",""University ISD_po.log";" University  /projects/asd/new/high/sde"","MS","13" 

在上面,我需要替換ID列的內容。 ID列的內容非常不一致,因爲它在內容中有很大的空格和符號((;,/)).ID列中的新內容應該是「輸入」。

此Id列包含2個雙引號,並且還有一些額外的空格。而其他專欄只有一個雙引號。

有沒有辦法在python中做到這一點?

回答

4

閱讀該.csv線由行,分割上,,並以「輸入」取代的第二列。 寫出來(到不同的文件),當您去:

f = open('mycsv.csv','rb') 
fo = open('out.csv','wb') 

# go through each line of the file 
for line in f: 
    bits = line.split(',') 
    # change second column 
    bits[1] = '"input"' 
    # join it back together and write it out 
    fo.write(','.join(bits)) 

f.close() 
fo.close() 

然後可以重命名,如果你想替換原文件。

+1

更安全地使用csv模塊。如果''''之間有逗號,你不應該將它們分開 – 2012-01-18 04:40:50

+0

歡呼聲,我不知道csv模塊。每天學些新東西! – 2012-01-18 04:42:37

+0

這是一個工作。我沒有(,)在「」。謝謝! – kanika 2012-01-18 04:57:41

14

你可以在Python中使用csv模塊來實現這一點。

csv.reader將以字符串列表的形式返回每一行。然後,您可以使用csv.writer來傳輸每一行並在此處修改ID列,但這會創建一個新文件。

所以:

import csv 
reader = csv.reader(open('file.csv', 'rb')) 
writer = csv.writer(open('outfile.csv','wb')) 
for row in reader: 
    writer.writerow([row[0], "input", row[2], row[3]]) 
+0

我在'wb'收到語法錯誤。我不知道爲什麼。 – kanika 2012-01-18 04:50:15

+0

什麼是完整的語法錯誤?上面的作品對我來說... – timc 2012-01-18 04:56:36

+0

我剛剛複製你的代碼,並改變了輸入文件的名稱。 'wb'有語法錯誤。 – kanika 2012-01-18 04:58:45