Selon mes recherches, le csvreader lit des données dans un format comme celui-ci

Name,Date,Job
John,3/14/2019,Doctor
Susan,3/14/2019,Cashier

Cependant, les données que j'ai stockées sont formatées comme ceci

Name,John,Susan,
Date,3/14/2019,3/14/2019
Job,Doctor,Cashier

Existe-t-il un moyen de faire lire le lecteur CSV de cette manière? Je le fais actuellement sans elle mais c'est assez fastidieux quand de nouvelles lignes apparaissent entre les virgules.

0
Dylan Newman 14 mars 2019 à 23:38

2 réponses

Meilleure réponse

Je sais que vous essayez d'utiliser la bibliothèque csv, mais c'est facile avec les pandas et l'opération de transposition.

Importer des pandas en tant que pd

Df = pd.read_csv ('horizontal.csv', index_col = 0)

>>> df
           John      Susan
Name                      
Date  3/14/2019  3/14/2019
Job      Doctor    Cashier

>>> df.T
Name        Date      Job
John   3/14/2019   Doctor
Susan  3/14/2019  Cashier
0
Geoff D 14 mars 2019 à 21:08

Essayez (not_csv.txt est un fichier qui contient les données que vous avez fournies)

La structure de données créée par zip est une liste de tuples.

Lisez à propos de zip ici.

with open('not_csv.txt', 'r') as f:
    data = [line.strip() for line in f.readlines()]
    for idx, entry in enumerate(data):
        if idx == 0:
            names = entry.split(',')[1:]
        elif idx == 1:
            dates = entry.split(',')[1:]
        elif idx == 2:
            jobs = entry.split(',')[1:]
merged_data = zip(names, dates, jobs)

print(merged_data)

Production

[('John', '3/14/2019', 'Doctor'), ('Susan', '3/14/2019', 'Cashier')]
0
balderman 14 mars 2019 à 21:00