nournina
Messages postés52Date d'inscriptiondimanche 27 octobre 2013StatutMembreDernière intervention17 juin 2014
-
13 mai 2014 à 21:53
YepoMax
Messages postés74Date d'inscriptionsamedi 8 décembre 2012StatutMembreDernière intervention14 juin 2014
-
19 mai 2014 à 17:42
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
Lire une ligne d'un fichier python - Meilleures réponses
beschtraffer
Messages postés16Date d'inscriptiondimanche 11 mars 2007StatutMembreDernière intervention22 mai 201423 14 mai 2014 à 13:33
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() mot=liste_mots[3]
YepoMax
Messages postés74Date d'inscriptionsamedi 8 décembre 2012StatutMembreDernière intervention14 juin 201420 16 mai 2014 à 02:30
+1
Mais pour le 4e mot, je ferais ainsi :
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
beschtraffer
Messages postés16Date d'inscriptiondimanche 11 mars 2007StatutMembreDernière intervention22 mai 201423 19 mai 2014 à 09:52
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
YepoMax
Messages postés74Date d'inscriptionsamedi 8 décembre 2012StatutMembreDernière intervention14 juin 201420 19 mai 2014 à 17:42
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).
16 mai 2014 à 02:30
Mais pour le 4e mot, je ferais ainsi :
19 mai 2014 à 09:52
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:
19 mai 2014 à 17:42
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).