J'ai un fichier texte. Le côté gauche montre le courant d'activité actuel et le côté droit de l'usure historique. Il est séparé par un caractère de tuyau ( | code>). Il ressemble à ceci:
Textfile=open(r"G:\....txt","r")
d={}
for line in Textfile:
x=line.split("|")
a=x[0]
b=x[1]
c=b.strip("\n")
e=a.strip()
f=e.strip("-")
g=c.strip("-")
d[f]=g
print(d)
4 Réponses :
Vous pouvez faire quelque chose comme ceci:
for line in Textfile: try: (key, value) = line.split("|") except ValueError: # split() did not result in two items. continue # This will deal among other with the delimiter lines ---- key = key.strip() value = value.strip() if value: # string is not empty after stripping d[key] = value prev_value = value # save for next line if needed else: d[key] = prev_value # assign last seen value as there isn't any new one
Pour accomplir cela, vous avez besoin d'une variable en dehors du champ d'application de la boucle pour la boucle, de sorte qu'elle puisse conserver les informations des boucles précédentes. Ici, nous ajoutons une variable précédente_landeuse code> qui sera mise à jour avec la dernière occurrence du côté droit du côté de la droite. Lorsqu'une ligne n'a pas de côté droit, elle utilisera cette variable pour remplir le vide, comme c'était la dernière valeur de cette colonne.
Textfile=open(r"G:\....txt","r")
d={}
previous_landuse = ''
for line in Textfile:
x=line.split("|")
#ignore the -------- line
if len(x) < 2:
continue
key = x[0].strip()
value = x[1].strip()
if value == '':
value = previous_landuse
else:
previous_landuse = value
d[key] = value
print(d)
Merci beaucoup ça marche !! :-)
@Leonie pas de problème, heureux d'aider! Assurez-vous de le marquer comme répondit Pls :)
semble simple si vous utilisez des conditions. Quelque chose comme ceci:
Une option à l'aide de Pandas. Je vais supposer que votre fichier texte contient ceci exactement y compris le Le contenu final de \ n code> et le
------- code> p>
df code> est: p>
Y a-t-il un
\ n code> dans votre fichier? Ou il est juste de montrer qu'il y a une nouvelle ligne? En cas d'ancien, je peux mettre à jour la réponse. :)
Vous vraiment i> besoin d'utiliser de meilleurs noms de variables. Les noms de variables significatifs vous permettront de créer un code beaucoup plus facile pour les autres (y compris votre avenir) de comprendre et de maintenir. Cela dit,
pandas code>
sfrfd code> pourrait être une solution pour vous.
Non, il n'est pas littéral dans le fichier, désolé!