2012-12-04 9 views
1

Donc, j'ai ce fichier qui contient des données mis en place comme ceci:Python 3: extraire des données à partir d'un fichier .txt?

Bob 5 60 
Carl 7 80 
Rick 8 100 
Santiago 7 30 

J'ai besoin de séparer chaque partie en trois listes différentes. Un pour le nom, un pour le premier nombre, et un pour le second nombre.

Mais je ne comprends pas vraiment, comment puis-je extraire exactement ces parties? Aussi, disons que je veux faire un tuple avec la première ligne, avec chacune des différentes parties (le nom, le premier nombre, et le deuxième nombre) dans un seul tuple?

Je ne comprends pas comment j'extraire cette information. Je viens juste d'apprendre à lire et à écrire des fichiers texte ... donc je suis plutôt désemparé.

EDIT: Comme une note, le fichier texte existe déjà. Le programme sur lequel je travaille a besoin de lire le fichier texte, dont les données sont formatées comme je l'ai indiqué.

+0

Peut-être que vous souhaitez diviser une chaîne en utilisant le caractère de l'espace? – BorrajaX

Répondre

5

Vous pouvez diviser chaque ligne sur les espaces:

with open(yourfile) as f: 
    rows = [l.split() for l in f] 

names, firstnums, secondnums = zip(*rows) 

zip(*iterable) reformate les 3 colonnes en 3 listes.

0

Ne serait-module Pickle ici idéal? Pickle donne la fonctionnalité Python pour charger et enregistrer des choses qui ont besoin d'être « utilisable » en Python, donc au lieu d'importer une chaîne à partir d'un fichier texte et d'avoir à l'analyser, cornichon peut charger et vous donner le conteneur réel que vous essayez travailler avec.

exemple:

import pickle 

myList = ["Bob", 1, 2] 
listToBeSaved = pickle.dumps(myList) # write this data to your save file 
#insert code where you work with the file and save it 
#.........  
#upon needing to open and work with this file 
listToBeLoaded = open(fileYouWroteTo) 
listTranslated = pickle.loads(listToBeLoaded) # turns the loaded data back into a proper list 
+0

Je ne pense pas que le cornichon soit un bon choix ici. L'OP a déjà des données dans un format spécifique, lequel pickle ne lira pas. –

+0

Je suggère cornichon b/c le zip() par exemple, tout en faisant un excellent travail de simplement déplacer les données dans une série de tuples, aussi juste recrache un tas de cordes, aussi ouvert (votrefichier) fait. Si l'OP veut travailler avec les valeurs qui sont (apparemment) associées aux noms, maintenant ils écrivent plus de code pour transformer les chaînes en ints. Si ce n'est pas pertinent pour leur projet et ils ne se soucient pas qu'ils pourraient simplement sauver/charger des conteneurs Python (ou les données avec lesquelles ils travaillent doivent absolument être dans ce format, pas de questions à ce sujet), alors rien de grave. –

+0

Mon problème est que j'ai déjà un fichier texte, et que j'ai besoin d'en tirer des informations. J'en ai besoin pour pouvoir prendre n'importe quel fichier, si c'est dans le format comme dans l'OP et le lire, fondamentalement. Je ne peux pas créer manuellement la liste. >. < – Ikiro

Questions connexes