Manipuler un répertoire téléphonique CSV en python

Résolu/Fermé
Bast - Modifié le 3 nov. 2022 à 12:27
 Bast - 3 nov. 2022 à 11:30

Bonjour,

J'ai généré un fichier csv (avec le bloc note) dans lequel il y a un répertoire téléphonique.

Nom,Prénom,Téléphone
JACK,Key,33123456789
LUCKAS,Brice,33123456790

Dans mon code python, je voudrais afficher le nom d'une seule personne, mais je n'y arrive pas. Quand j'essaye, ça met 2 noms.

file = open('fichier.txt', 'r', encoding='utf8')
lesclef = file.readline()
listeclef = lesclef.split(',')
ligne = file.readline()
while ligne != '':
    li = ligne.split(',')
    print(li[0])
    ligne = file.readline()
file.close()

Je voudrais par exemple que ça affiche juste JACK, mais dans mon cas, ça affiche JACK et LUCKAS. J'aimerais enfin que mon code n'importe pas de module.

Merci d'avance

A voir également:

2 réponses

Bonjour,

Étant donné que tu as utilisé des noms de colonnes dans ton fichier csv, alors une liste de dictionnaire à l'instar de la classe DictReader du module csv sera à privilégier.

Une simple construction de cette liste de dictionnaires.

with open('fichier.txt') as f:
    items = []
    keys = f.readline().strip().split(',')
    for lines in f.readlines():
        values = lines.strip().split(',')
        items.append({keys[i]:v for i, v in enumerate(values)})

Toutes les valeurs seront donc dans la liste items, un print pour visualiser.

Ensuite, sachant que tu souhaites trouver les données de tel individu, alors un parcours de ta liste s'avérera nécessaire pour cette recherche.

for item in items:
    if item['Nom'] == 'JACK':
        print('>>>', item)
        break

De là, tu pourrais faire une fonction de recherche ayant 2 (ou 3) paramètres, valeur à rechercher, sur quelle clef.

def item_find(value, key):
    # returnera la ligne de la liste items ou la valeur de la clef sera value
    # ou None (ou une erreur) si pas trouvé

Bonne continuation.

1

Merci beaucoup tu me sauves

0