How to: Coordinate DictReader and Reader for CSV

Neil Cerutti neilc at norwich.edu
Mon Nov 21 10:41:31 EST 2011


On 2011-11-21, ray <ray at aarden.us> wrote:
> Is there a way to capture the keys outside of the for loop so
> when the for loop is entered, only data is extracted?

I have sometimes done the following type of thing, since
DictReader doesn't offer an attribute providing the field names.
This is Python 3.3.2 code, so revise boilerplate if necessary.

# Open once as a csv.reader instance to get the field names, in
# order.
with open(in_file_name, newline='') as in_file:
    reader = csv.reader(in_file)
    fields = next(reader)

# Open it again as a csv.DictReader instance to do actual work,
# writing revised lines to the output file as I go.
with open(in_file_name, newline=') as in_file:
  with open(out_file_name, "w", newline='') as out_file:
    reader = csv.DictReader(in_file)
    writer = csv.DictWriter(out_file, fieldnames=fields)
    # Write header line
    writer.writerow({f: f for n in fields})
    for record in reader:
        # Change a few fields
	# [...]
	writer.writerow(record)

-- 
Neil Cerutti
  "This room is an illusion and is a trap devisut by Satan.  Go
ahead and dauntlessly!  Make rapid progres!"
  --Ghosts 'n Goblins



More information about the Python-list mailing list