2014-10-10 84 views
3

我想知道是否有辦法用python將數據插入到csv文件的特定單元格中。比方說,我有變量'數據',它存儲值「300」。我如何將這些數據添加到csv文件中的第3行第2列?感謝您提前提供的所有幫助,並感謝您的任何建議。用python插入csv中的特定單元格的值

+0

可能的重複[在python中使用csv模塊寫入特定單元格](http://stackoverflow.com/questions/3699927/writing-to-a-particular-cell-using-csv-module-in-python ) – rwflash 2014-10-10 16:07:20

回答

2

假設我有以下列出的清單:

>>> data=[[1,2,3], 
...  [4,5,6], 
...  [7,8,9]] 

你可以data[row][col]這樣修改任何項目:當你寫一個CSV文件

>>> data[1][0]="new value!" 
>>> data 
[[1, 2, 3], ['new value!', 5, 6], [7, 8, 9]] 

,您通常會被寫入數據結構看起來像列表或列表字典的列表。在使用csv寫入數據之前,只需更改行的值col(對於列表的列表)或標題的值(如果是字典的話)。

考慮,給出了這個CSV文本文件:

$ cat /tmp/f.csv 
1,2,3 
4,5,6 
7,8,9 

您可以打開該文件,閱讀:

>>> with open('/tmp/f.csv') as f: 
...  data=[row for row in csv.reader(f)] 

>>> data 
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']] 

現在修改:

with open('/tmp/f.csv', 'w') as f: 
    w=csv.writer(f) 
    data[1][0]="New Value!" 
    for row in data: 
     w.writerow(row) 

然後看到它有已更改:

$ cat /tmp/f.csv 
1,2,3 
New Value!,5,6 
7,8,9 
+0

我在閱讀文件時遇到了一個錯誤('with open')..我按兩次輸入返回python光標,然後是'_csv.Error:未加引號的字段中顯示的換行符 - 你需要打開該文件採用通用換行模式?' – James 2016-10-04 23:38:10

0

在你的例子中,我們有一個列表對象,它是一個嵌套列表。所以,現在

nested_list [ x ] [ y ] 

或在你的榜樣......

nested_list [ 3 ] [ 2 ] 

要訪問您希望在NestedList更換的項目,你會指定x,y值我們知道如何訪問我們想要替換的值,我們可以簡單地刪除列號爲2的項目,然後在列號2處插入新項目,如下所示:

del nested_list [ 3 ] [ 2 ] # Delete the Old Item 
    nested_list [ 3 ].insert (2 , "New Item Value") 

我喜歡上面的方法在一個班輪像...

nested_list [ 3 ] [ 2 ] = "New Item Value" 

因爲我經常碰到的問題不變性與Python列表,其中值實際上並不更改爲「新條目值」。

刪除和插入對我來說是一個可靠的列表替換方法。

相關問題