2013-05-13 109 views
1

我有一个CSV文件与球员属性:覆盖现有列表中的CSV文件的Python

['Peter Regin', '2', 'DAN', 'N', '1987', '6', '6', '199', '74', '2', '608000', '', '77', '52', '74', '72', '58', '72', '71', '72', '70', '72', '74', '68', '74', '41', '40', '51'] 
['Andrej Sekera', '8', 'SVK', 'N', '1987', '6', '6', '198', '72', '3', '1323000', '', '65', '39', '89', '78', '75', '70', '72', '56', '53', '56', '57', '72', '57', '59', '70', '51'] 

例如,我要检查,如果一个球员是一个中心(“2”在我的列表中的位置1 )后,我想修改12元素(这是彼得雷金'77')

我该怎么做,使用CSV模块?

import csv 


class ManipulationFichier: 


    def __init__(self, fichier): 
     self.fichier = fichier 

    def read(self): 

     with open(self.fichier) as f: 
      reader = csv.reader(f) 

      for row in reader: 
       print(row) 


    def write(self): 

     with open(self.fichier) as f: 
      writer = csv.writer(f) 

      for row in f: 
       if row[1] == 2: 
        writer.writerows(row[1] for row in f) 

里面做什么都不重要..

感谢,

+0

你能告诉我们你到目前为止的代码吗? – 2013-05-13 23:59:17

回答

2

一般情况下,CSV文件不能可靠地就地修改。

将整个文件读入内存(通常是列表清单,如您的示例),修改数据,然后将整个文件写回。

除非您的文件真的很大,并且您经常这样做,否则性能降低可以忽略不计。

+0

什么是最有效的方法。 所以我应该使用mmap模块? 或写在列表中?使用阅读器并追加? – 2013-05-14 00:39:11

+1

忘记效率,直到你达到正确的功能。做最简单的事情。我敢打赌,你的程序的瓶颈将在其他地方:) – 9000 2013-05-14 00:40:34