2012-04-15 103 views
3

所以我一直試圖在Python中使用csv模塊來將數據添加到現有的行和列中,但只添加每行的特定列。所以對於例子讓我們說我現有的CSV文件有以下幾點:使用Python更新csv文件中的現有列和行

id, name, city, age 
1, Ed,, 34 
2, Pat,, 23 

所以基本上每個人的城市是缺少的,所以我想更新與人的城市的每一行。但是,writerow方法似乎只能替換csv文件中的現有數據。將打開的文件更改爲追加模式只是將數據添加到新行。有什麼方法可以跳過現有的數據,並且只將城市添加到每一行?

感謝

回答

3

這裏有一個關於其他開發商試圖做同樣的事情後 - http://www.dreamincode.net/forums/topic/196479-editing-a-csv-file/

在他的帖子中的代碼片段演示他是如何搜索一個特定的「位置」 - 在一個CSV文件更新特定記錄(單元格)在csv文件(如Excel中的特定單元格),並用新信息更新該單元格。您的案例中的特定用戶的城市。

因此,模仿他的示例代碼,你可以實現你想要的結果。然而,如果你總是看到自己在做這個 - '更新CSV文件中的單元格',那麼最好使用數據庫來存儲信息。通過導入初始csv中的初始數據集以及通過更新調用完成的更新更新到您選擇的數據庫。使用提供orm的庫與數據庫進行交互。 :-)

即使sqlite3會比嘗試更新csv文件中的特定單元格更好。

+1

感謝您的回答。所以從代碼的外觀來看,它並沒有更新每一行,而是將其替換或寫入其中。但也許這是做到這一點的唯一方法。只是看起來很簡單,但我猜csv模塊沒有這個能力? – wilbev 2012-04-15 06:16:03

+0

據我所知,在幾個項目中使用csv模塊,沒有使用python csv模塊更新csv行中單元格的概念。 – 2012-04-15 08:16:36