2014-10-10 85 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列表,其中值实际上并不更改为“新条目值”。

删除和插入对我来说是一个可靠的列表替换方法。

相关问题