2016-10-05 122 views
1

我想製作一個python腳本,它有一個計數器來替換CSV文件中特定單元格的當前值。如何替換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 

在這個例子中,我需要一個新的值來代替(第2行電池6)的8696值(newCTLcount)。

+0

您的最終目標是什麼?要在內存中或磁盤上更改表格? – tuergeist

+0

在disc..this只是部分代碼...只是我需要 –

+0

你應該考慮在你讀它時寫數據。 – tuergeist

回答

0

最有可能這是一個好主意,而讀寫/解析到

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見https://docs.python.org/2/library/csv.html

0

了... ...

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])) 

感謝的

+0

這是如何改變磁盤上的任何內容的? –

+0

我想我誤解了你對光盤的含義... 這段代碼在光盤上發生更改後保存了CSV文件...那是我的意思嗎? –

+0

上面的代碼以讀取模式打開文件,並更改它讀取的內容。它不寫入/保存任何內容。 –

相關問題