Python 如何替换csv文件特定单元格中的值?

Python 如何替换csv文件特定单元格中的值?,python,csv,Python,Csv,我想制作一个python脚本,它有一个计数器,用于替换CSV文件中特定单元格的当前值 我的代码是: with open(ctlLst[-1], 'rb') as csvfile: csvReader = csv.reader(csvfile) csvReader.next() for row in csvReader: if row[6]>counter: newCTLcount=int(row[6])-counter

我想制作一个python脚本,它有一个计数器,用于替换CSV文件中特定单元格的当前值

我的代码是:

with open(ctlLst[-1], 'rb') as csvfile:
    csvReader = csv.reader(csvfile)
    csvReader.next()
    for row in csvReader:
        if row[6]>counter:
        newCTLcount=int(row[6])-counter
        #need to replace cell row[6]
该文件如下所示:

 InterfaceCode  InterfaceSeqID  OperatorCode    CreationDateTime    MintransactionDateTime  MaxtransactionDateTime  NoOfRows    ControlFileName DataFileName
201 1170    30  20161005 04:30:27   20161004 06:55:56   20161005 03:08:37   8696    CTL_TripEventAndAlert_30_20161004.CSV   TripEventAndAlert_30_20161004.CSV

在本例中,我需要用一个新值(newCTLcount)替换8696的值(在第2行单元格6上)。

最可能的做法是在读取/解析时写入以节省内存

with open('out.csv', 'wb') as outfile:
  with open(ctlLst[-1], 'rb') as csvfile:
    csvReader = csv.reader(csvfile)
    csvWriter = csv.writer(outfile)
    csvReader.next()
    for row in csvReader:
      row[6] = int(row[6]) # assumed as int
       if row[6] > counter:
         row[6] -= counter
      outfile.writerow(row)

对于Python2,请参见

,最可能的做法是边读边写以节省内存

with open('out.csv', 'wb') as outfile:
  with open(ctlLst[-1], 'rb') as csvfile:
    csvReader = csv.reader(csvfile)
    csvWriter = csv.writer(outfile)
    csvReader.next()
    for row in csvReader:
      row[6] = int(row[6]) # assumed as int
       if row[6] > counter:
         row[6] -= counter
      outfile.writerow(row)
关于Python 2,请参见获得它

 rowData=[]
 with open(ctlLst[-1], 'rb') as csvfile:
 csvReader = csv.reader(csvfile)
     for row in csvReader:
        rowData.append(row)

 rowData[1][6]=int(rowData[1][6])-counter
 print ("new Row data count is " + str(rowData[1][6]))
谢谢

明白了

 rowData=[]
 with open(ctlLst[-1], 'rb') as csvfile:
 csvReader = csv.reader(csvfile)
     for row in csvReader:
        rowData.append(row)

 rowData[1][6]=int(rowData[1][6])-counter
 print ("new Row data count is " + str(rowData[1][6]))

谢谢

你的最终目标是什么?在内存或磁盘上更改表?在磁盘上…这只是部分代码……正是我所需要的,你应该考虑在你读它的时候写数据。你的最终目标是什么?在内存中或磁盘上有改变的表?在磁盘上…这只是部分代码……对于我所需要的,你应该考虑在你读它的时候写数据。这如何改变磁盘上的任何东西?我想我误解了你对光盘的意思…此代码保存了光盘上更改后的CSV文件。。。这就是我的意思,你知道吗?上面的代码以读取模式打开一个文件,并对其读取的内容进行更改。它不会写入/保存任何内容。这会如何改变磁盘上的任何内容?我想我误解了您对磁盘的含义。。。此代码保存了光盘上更改后的CSV文件。。。这就是我的意思,你知道吗?上面的代码以读取模式打开一个文件,并对其读取的内容进行更改。它不会写入/保存任何内容。