Recupérer un nombre dans un fichier texte avec python
Fermé
rom1985
Messages postés
10
Date d'inscription
jeudi 24 juillet 2014
Statut
Membre
Dernière intervention
17 septembre 2014
-
13 sept. 2014 à 15:31
rom1985 Messages postés 10 Date d'inscription jeudi 24 juillet 2014 Statut Membre Dernière intervention 17 septembre 2014 - 17 sept. 2014 à 12:31
rom1985 Messages postés 10 Date d'inscription jeudi 24 juillet 2014 Statut Membre Dernière intervention 17 septembre 2014 - 17 sept. 2014 à 12:31
A voir également:
- Extraire données fichier texte python
- Fichier rar - Guide
- Extraire une video youtube - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
8 réponses
Utilisateur anonyme
Modifié par fred1599 le 17/09/2014 à 09:48
Modifié par fred1599 le 17/09/2014 à 09:48
Je ferais de cette façon (voir les commentaires de mon code)
zip_longest
from itertools import zip_longest COLUMN_1 = [] COLUMN_2 = [] # ligne de test LINE_TEST = "512.56, 13.4072, 530.89, 12.2854, 550.67, 11.0875, 577.59, " def addNumber(n): if n > 100: COLUMN_1.append(n) else: COLUMN_2.append(n) for value in LINE_TEST.split(','): try: v = float(value) addNumber(v) # ajout dans COLUMN_1 ou COLUMN_2 selon valeur de v except ValueError: pass # None si pas un nombre print(COLUMN_1) # affichage colonne 1 print(COLUMN_2) # affichage colonne 2 line_res = [] for i, j in zip_longest(COLUMN_1, COLUMN_2): line_res.append((i, j)) # création de chaque ligne for line in line_res: line = map(str, line) # transformation entier en chaine line = '\t'.join(line) # espacement entre les deux valeurs print(line) # écriture dans fichier
zip_longest
Utilisateur anonyme
13 sept. 2014 à 15:55
13 sept. 2014 à 15:55
Le problème n'est pas clair, nous allons pas demander à python de deviner quel numéro il doit récupérer.
Comment expliquer à python que c'est ce numéro et pas un autre ? Comment le reconnaître sans confondre les autres ?
Bref il faut avoir réfléchi au problème avant de coder, donc on attend vos détails
Comment expliquer à python que c'est ce numéro et pas un autre ? Comment le reconnaître sans confondre les autres ?
Bref il faut avoir réfléchi au problème avant de coder, donc on attend vos détails
rom1985
Messages postés
10
Date d'inscription
jeudi 24 juillet 2014
Statut
Membre
Dernière intervention
17 septembre 2014
2
13 sept. 2014 à 19:23
13 sept. 2014 à 19:23
Oui en effet l'explication n'est pas très claire désolé.
En fait il ne faut pas lire les lignes débutant par "!" ou "#" (ça ok) et le nombre que je veux copier se trouve sur une ligne ou il y a du texte au début elle est différentes de toutes les autres.
J'aimerai donc que quand python arrive sur la ligne débutant par : "Average maximum....567.01 (7.08) " il copie juste le nombre de cette ligne mais pas celui entre parenthèse (si c'est possible).
Voilà j'espère avoir été un peu plus clair
Merci
En fait il ne faut pas lire les lignes débutant par "!" ou "#" (ça ok) et le nombre que je veux copier se trouve sur une ligne ou il y a du texte au début elle est différentes de toutes les autres.
J'aimerai donc que quand python arrive sur la ligne débutant par : "Average maximum....567.01 (7.08) " il copie juste le nombre de cette ligne mais pas celui entre parenthèse (si c'est possible).
Voilà j'espère avoir été un peu plus clair
Merci
Utilisateur anonyme
Modifié par fred1599 le 13/09/2014 à 21:48
Modifié par fred1599 le 13/09/2014 à 21:48
Ok, nous savons maintenant que la ligne doit débuter par "Average maximum", mais peut-on avoir exactement le format d'une de ces lignes ?
Il y aurait deux solutions, selon le format s'il varie selon les lignes ou pas
Soit parser la ligne manuellement avec les méthodes habituelles sur les chaînes
Soit parser la ligne par les regex (dans le cas où les lignes ne se ressemblent pas)
Avec les regex on arrive à un code simple (faut-il connaître les regex)
Il y aurait deux solutions, selon le format s'il varie selon les lignes ou pas
Soit parser la ligne manuellement avec les méthodes habituelles sur les chaînes
Soit parser la ligne par les regex (dans le cas où les lignes ne se ressemblent pas)
Avec les regex on arrive à un code simple (faut-il connaître les regex)
>>> s = "mon texte 25.7 (7.08)"
>>> res = re.search("(\d+.\d+)", s)
>>> res.group()
'25.7'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
rom1985
Messages postés
10
Date d'inscription
jeudi 24 juillet 2014
Statut
Membre
Dernière intervention
17 septembre 2014
2
15 sept. 2014 à 10:28
15 sept. 2014 à 10:28
Bonjour Fred1599,
Merci beaucoup pour ton aide en effet je ne connaissais pas les regex et il est vrai qu'ils sont simples et très efficaces j'ai donc réussi à extraire mes données les écrire dans un fichier txt séparés pas un virgule.
Maintenant je travail sur les mettre en deux colonnes selon leurs valeurs, si supérieur à 100 alors je les met dans la colonne 1 si inférieur je les met dans la colonne 2.
Je fais des recherche sur les index en écrivant des fichiers .csv est-ce la solution la plus simple?
Aurais-tu un conseil?
Merci beaucoup pour ton aide en effet je ne connaissais pas les regex et il est vrai qu'ils sont simples et très efficaces j'ai donc réussi à extraire mes données les écrire dans un fichier txt séparés pas un virgule.
Maintenant je travail sur les mettre en deux colonnes selon leurs valeurs, si supérieur à 100 alors je les met dans la colonne 1 si inférieur je les met dans la colonne 2.
Je fais des recherche sur les index en écrivant des fichiers .csv est-ce la solution la plus simple?
Aurais-tu un conseil?
Utilisateur anonyme
15 sept. 2014 à 11:23
15 sept. 2014 à 11:23
"Maintenant je travail sur les mettre en deux colonnes selon leurs valeurs, si supérieur à 100 alors je les met dans la colonne 1 si inférieur je les met dans la colonne 2."
Ce qui veut dire que tu auras des colonnes vides ?
Tes lignes seront séparées par ?
Ce qui veut dire que tu auras des colonnes vides ?
Tes lignes seront séparées par ?
rom1985
Messages postés
10
Date d'inscription
jeudi 24 juillet 2014
Statut
Membre
Dernière intervention
17 septembre 2014
2
15 sept. 2014 à 12:01
15 sept. 2014 à 12:01
Je précise un peu, avec mon code précédemment j'extrayais deux valeurs qui ne sont pas les mêmes mais que je ne pouvais pas différencier avec Python. Donc le code que j'ai écris copié ces deux valeurs, dans un fichier .txt, séparées par une virgule (je peux aussi les mettre sur une colonne si besoin). Comme suit:
512.56, 13.4072, 530.89, 12.2854, 550.67, 11.0875, 577.59, 9.9835.........
Ces valeurs ont un sens différents, je voudrais donc les séparer. Les valeurs en gras doivent être dans la colonne 1 et les autres dans la colonne 2, sans colonne vide comme suit:
512.56 13.4072
530.89 12.2854
550.67 11.0875
577.59 9.9835
La différence entre ces 2 valeurs est qu'une des 2 est toujours supérieur à 100 et l'autre toujours inférieur à 100.
Voilà j'espère avoir été un peu plus clair.
Merci pour ton aide.
512.56, 13.4072, 530.89, 12.2854, 550.67, 11.0875, 577.59, 9.9835.........
Ces valeurs ont un sens différents, je voudrais donc les séparer. Les valeurs en gras doivent être dans la colonne 1 et les autres dans la colonne 2, sans colonne vide comme suit:
512.56 13.4072
530.89 12.2854
550.67 11.0875
577.59 9.9835
La différence entre ces 2 valeurs est qu'une des 2 est toujours supérieur à 100 et l'autre toujours inférieur à 100.
Voilà j'espère avoir été un peu plus clair.
Merci pour ton aide.
rom1985
Messages postés
10
Date d'inscription
jeudi 24 juillet 2014
Statut
Membre
Dernière intervention
17 septembre 2014
2
17 sept. 2014 à 12:31
17 sept. 2014 à 12:31
Merci beaucoup pour ton aide fred1599 ça marche très bien.