J'ai du mal à convertir un fichier texte dans une liste de tuples. Le fichier texte sera au format suivant et le fichier est nommé data.txt
evans Lee comédien 25 000
Smith Acteur 50 000
Mack Lee comédien 30 000 P>
J'ai réussi à atteindre partiellement mon objectif en utilisant le code suivant P>
('Evans', 'Lee', 'Comedian', '25,000\nSmith', 'Will', 'Actor', '50,000\nMack', 'Lee', 'Comedian', '30,000')
4 Réponses :
Si vous LIRE () CODE> Le fichier entier en une grosse chaîne, vous devez
SplitLines () CODE> PREMIER:
import csv
with open("data.txt") as load_file:
reader = csv.reader(load_file, delimiter=" ")
data = [tuple(row) for row in reader]
vous voulez notez que cela dépendra de tous les espaces les extrémités de chaque ligne, pas seulement votre nouvelle ligne. C'est probablement ok, je devine. P> p> Readlines () code>, qui lit chaque ligne du fichier d'entrée dans un élément distinct dans une liste:
Vous êtes très proche. Infile.Read () Code> Vous donne le fichier entier en tant que chaîne, qui inclut les caractèresWLINE (
\ n code>). Vous pouvez utiliser
.readlines () code> à la place.
(
("Evans", "Lee", "Comedian", "25,000"),
("Smith", "Will", "Actor", "50,000"),
...
)
Le problème ici est comment analyser votre fichier. En général, les fichiers sont des valeurs séparées par des virgules, où nous avons un seul caractère pour scinder les champs HTTPS: / /pt.wikipedia.org/wiki/comma-separated_values Ou nous avons un fichier où les colonnes ont une longueur fixe https://fr.wikipedia.org/wiki / Plate-file_database
Dans votre cas, j'utiliserais une expression régulière pour analyser votre ligne. P>
Essayez ceci: p>
import re with open("data.txt", "r") as infile: for line in infile: groups = re.search("^(.+) (\d.*)", line) name = groups.group(1) value = groups.group(2) print("Name: %s Value:%s" % (name, value))
Vient de changer le '' inside data.split () par \ n