Analyser les paires clé-valeur dans un fichier texte
Je suis un débutant en Python et je recherche comment analyser une .fichier txt.
Mon .fichier txt est une table avec calcul des informations comme :
myfile.txt
var0 = 16
var1 = 1.12434E10
var2 = -1.923 E-3
var3 = 920
Comment lire les valeurs et les mettre dans myvar0, myvar1, myvar2, myvar3
en python?
OriginalL'auteur Vincent | 2012-02-06
Vous devez vous connecter pour publier un commentaire.
Je suggère de stocker les valeurs dans un dictionnaire au lieu de séparer les variables locales:
Maintenant accéder en tant que
myvars["var1"]
. Si les noms sont tous python valide les noms de variable, vous pouvez mettre ce ci-dessous:et l'accès aux valeurs comme par exemple
names.var1
.qu'advient-il si le fichier tas de commentaires "# ceci est un commentaire de la ligne'
et
float(val.strip())
sont équivalentesOriginalL'auteur Lauritz V. Thaulow
Essayer python module standard configparser
MissingSectionHeaderError
si le fichier ne contient pas d'en-têtes de section et de l'OP de l'exemple n'a pas d'en-têtes. La solution personnalisée par @Lauritz est probablement plus simple que solutions possibles pour utiliser configparser sans les en-têtes.OriginalL'auteur kev
Personnellement, j'ai résolu ce problème en créant un .py fichier qui contient simplement tous les paramètres comme variables ensuite:
dans les modules du programme qui ont besoin de paramètres.
C'est un peu moche, mais TRÈS simple et facile à travailler avec.
OriginalL'auteur John Bailey
@Kev le suggère, le configparser module est le chemin à parcourir.
Toutefois, dans certains scénarios (un peu moche, je l'avoue), mais de façon très simple et efficace de le faire est de renommer
myfile.txt
àmyfile.py
et faire unfrom myfile import *
(après avoir corrigé la faute de frappevar 0
->var0
)Cependant, c'est très précaire, donc si le fichier provient d'une source externe ou peut être écrit par un utilisateur malveillant, utilisez quelque chose qui valide les données au lieu de l'exécuter aveuglément.
OriginalL'auteur Kimvais
S'il existe plusieurs valeurs séparées par des virgules sur une seule ligne, voici le code à analyser que:
OriginalL'auteur Lana Nova
Utilisation pandas.read_csv lorsque le format de fichier devient de plus en plus de fantaisie (comme les commentaires).
OriginalL'auteur rwitzel
Dict interprétations (PEP 274) peut être utilisé pour une expression plus courte (60 caractères):
EDIT: passe de 72 à 60 caractères grâce à @jmb suggestion (éviter
.readlines()
)..readlines()
pour une durée plus courte (et plus rapide) de l'expressionOriginalL'auteur Francesco Frassinelli