Home > Enterprise >  How can I loop through a csv file and replace values in it with a python dictionary
How can I loop through a csv file and replace values in it with a python dictionary

Time:03-28

This is my dictionary {'0':'Denver', '1':'Chicago', '2':'Maryland'}

in the csv files I have 0 1 1 0 2 2 3 2 I would like to change the numbers in the CSV file to the values in the dictionary: 0 Chicago 1 Denver 2 Maryland 3 Maryland

CodePudding user response:

d = {'0':'Denver', '1':'Chicago', '2':'Maryland'}

# we'll start by creating a new file to write the output to
with open("output_filename.csv", "w ") as out_file:
    # So the first piece is reading the file in python
    with open("filename.csv") as in_file:
        # next you'll want to loop over each line
        for line in in_file:
            # Now we can split the string into elements by the whitespce
            line_list = line.split(" ")
            # line_list = ['0', '1', '1', '0', '2', '2', '3', '2']
            # we can loop over the list taking alternating elements and looking them up
            result = " ".join([d[item] if index % 2 else item for index, item in enumerate(line_list)])
            out_file.write(result)

The real "work" is happening in this line: result = " ".join([d[item] if index % 2 else item for index, item in enumerate(line_list)])

enumerate returns the index and the value as we loop over the line_list so (0, '0'), (1, '1'), (2, '1') ...

then the turnery is using the modulo % to see what the remainder is when dividing by 2 (ie if the index is 0, 2, 4, ...) and using the dictionary to look up the value if it isn't (ie index 1, 3, 5...)

  • Related