bonjour,
je veut lire un fichier mais pas tout les lignes de ce fichier seulement la ligne 3 et le troisième mot de la quatrième ligne mais je n'arrive pas à trouver comment faire ça s'il veut plait si vous pouvez m'aidez à réaliser ça .
merci pour votre collaboration
A voir également:
Python lire fichier texte ligne par ligne
Python lire fichier ligne par ligne - Meilleures réponses
Python lire un fichier ligne par ligne - Meilleures réponses
Bonjour,
Pour lire une seule ligne dans un fichier, il est possible d'utiliser readline() qui ne lit qu'une ligne à la fois (utile si le fichier est très lourd):
with open(fichier,'r') as fich: for i in range(3): ligne = fich.readline()
A la fin de la boucle, "ligne" contiendra la 3ème ligne.
Sinon, si le fichier est plus léger, readlines() retourne une liste dont chaque élément est une ligne du fichier.
En ce qui concerne l'extraction d'un mot, la fonction split(sep) est très utile. Elle fractionne une chaîne, en utilisant le séparateur (sep) fourni. Par défaut, "sep" est un espace. Donc pour extraire le 4ème mot d'une ligne:
liste_mots = ligne.split(maxsplit=4)
# Maxsplit va limiter le nombre de split à 4 pour que la fonction ne fasse rien d'inutile (pas obligatoire, mais dans certain cas on y gagne bcp)
mot = liste_mots[3] if len(liste_mots) > 3 else ""
# On gère le cas où il n'y a pas de quatrième mot
Bien vu le maxsplit... Je ne connaissais pas.
C'est effectivement très important.. Il peut arriver d'avoir un très grand nombre de valeurs sur une ligne, si on doit lire la 4eme valeur sur un grand nombre de lignes, la différence doit vraiment se faire sentir. Merci yepo
Concernant la gestion d'erreur, on peut aussi faire:
try:
liste_mots = ligne.split(maxsplit=4)[3]
except IndexError:
# gestion de l'erreur
En effet, le bloc "try except" est intéressant si l'on doit changer de comportement si il n'y a pas assez de mots.
Voici ce que je ferais dans ce cas :
def handle_error():
""" Comportement si il n'y a pas assez de mots """
# Gestion de l'erreur
return resultat # Optionel
liste_mots = ligne.split(maxsplit=4)
mot = liste_mots[3] if len(liste_mots) > 3 else handle_error()
Mon but est d'essayer d'éviter les blocs try except lorsqu'on peut le remplacer facilement par un bloc if else (choix personel, les deux options s'équivalent).
Mais pour le 4e mot, je ferais ainsi :
C'est effectivement très important.. Il peut arriver d'avoir un très grand nombre de valeurs sur une ligne, si on doit lire la 4eme valeur sur un grand nombre de lignes, la différence doit vraiment se faire sentir. Merci yepo
Concernant la gestion d'erreur, on peut aussi faire:
Voici ce que je ferais dans ce cas :
Mon but est d'essayer d'éviter les blocs try except lorsqu'on peut le remplacer facilement par un bloc if else (choix personel, les deux options s'équivalent).