0
votes

Convertir le fichier texte en liste des utilles

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')


1 commentaires

Vient de changer le '' inside data.split () par \ n


4 Réponses :


3
votes

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]


0 commentaires

1
votes

vous voulez Readlines () , qui lit chaque ligne du fichier d'entrée dans un élément distinct dans une liste: xxx

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.


0 commentaires

2
votes

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"),
  ...
)


0 commentaires

0
votes

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))


0 commentaires