Lo bueno con el uso de 'csv' como se ha mencionado en otras respuestas aquí es que puede ser utilizado para la lectura de un archivo (el caso de uso obvio) pero también analiza una cadena formateada csv.
Ejemplo de lectura de un archivo csv:
import csv
with open('my_file.csv') as f:
for line in csv.DictReader(f, fieldnames=('val1', 'val2', 'val3')):
print(line)
aviso de que se puede pasar de forma explícita las cabeceras de los que desea ser las claves, por lo que es muy fácil de usar archivos CSV sin cabeceras.
Otro caso de uso es la lectura más que una cadena regular con 'csv'
Ejemplo:
import csv
my_csv_string = 'val1, val2, val3'
my_csv_dict = next(csv.DictReader(StringIO(s), fieldnames=('key1', 'key2', 'key3')))
De todos modos, 'csv.DictReader()' es lo que necesita ..
I' Nunca lo había notado antes ... –