J'essaie d'effectuer des conversions de type sur des données CSV qui sont entièrement composées de chaînes de caractères. Je pensais utiliser un dictionnaire de noms d'en-têtes de fonctions et mapper ces fonctions sur chaque ligne du CSV. Je suis juste un peu bloqué sur la façon de mapper efficacement plusieurs fonctions sur une ligne. Je pensais énumérer les en-têtes et créer un nouveau dictionnaire d'indices de fonctions :
header_map = {'Foo':str,
'Bar':str,
'FooBar':float}
csv_data = [('Foo', 'Bar', 'FooBar'),
#lots of data...
]
index_map = {}
#enumerate the rows and create a dictionary of index:function
for i, header in enumerate(csv_data[0]):
index_map[i] = header_map[header]
#retrieve the function for each index and call it on the value
new_csv = [[index_map[i](value) for i, value in enumerate(row)]
for row in csv_data[1:]]
Je suis simplement curieux de savoir si quelqu'un connaît un moyen plus simple et efficace d'accomplir ce type d'opération ?