pythoncsv

Change specific value in CSV file via Python


I need a way to change the specific value of a column of a CSV file. For example I have this CSV file:

"Ip","Sites"
"127.0.0.1",10
"127.0.0.2",23
"127.0.0.3",50

and I need to change the value 23 to 30 of the row "127.0.0.2".

I use csv library: import csv


Solution

  • This is the solution opening the csv file, changing the values in memory and then writing back the changes to disk.

    r = csv.reader(open('/tmp/test.csv')) # Here your csv file
    lines = list(r)
    

    Content of lines:

    [['Ip', 'Sites'],
     ['127.0.0.1', '10'],
     ['127.0.0.2', '23'],
     ['127.0.0.3', '50']]
    

    Modifying the values:

    lines[2][1] = '30'
    

    Content of lines:

    [['Ip', 'Sites'],
     ['127.0.0.1', '10'],
     ['127.0.0.2', '30'],
     ['127.0.0.3', '50']]
    

    Now we only have to write it back to a file

    with open('/tmp/output.csv', 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerows(lines)