0
votes

Comment extraire la clé et la valeur d'un fichier texte

Je voudrais extraire la clé et la valeur d'un fichier texte existant. Saisissez une variable distincte et une valeur dans une variable distincte.

Le fichier texte (sample.txt) contient le contenu ci-dessous,

If we iterate through the file, i am expecting the output as below,

Key 0 = one
Key 1 = three
Key 2 = five
Key 3 = seven
key 4 = sample

Value 0 = two
Value 1 = four
Value 2 = six
Value 3 = eight
Value 4 = ten

Je suis capable de lire le contenu à partir du fichier texte, mais je ne suis pas en mesure de poursuivre l'extraction de la clé et de la valeur.

with open ("sampletxt.txt", "r") as hfile:
    sp = hfile.read()
    print (sp)

x=0
for line in sp:
    sp.split(":")[x].strip()
    x+=1

Ce qui précède extrait uniquement la valeur et fournit également une exception d'index hors plage au fin.

one:two
three:four
five:six
seven:eight
nine:ten
sample:demo


0 commentaires

4 Réponses :


0
votes

Pourquoi n'essayez-vous pas:

with open ("sampletxt.txt", "r") as hfile:
    sp = hfile.read()
    print (sp)

dictionary = {}
for x, line in enumerate(sp):
    line_list = sp.split(":")
    dictionary[line_list[0]]=line_list[1]


0 commentaires

2
votes

Cela devrait fonctionner:

with open ("sampletxt.txt", "r") as hfile:
  sp = hfile.read()
  print (sp)

lines = sp.split("\n")
for line in lines:
  # print("line:[{0}]".format(line))
  parts = line.split(":")
  print("key:[{0}], value:[{1}]".format(parts[0], parts[1]))


3 commentaires

Windsting, ça marche. Cependant, j'obtiens l'exception ci-dessous le long des résultats, ligne 21, dans print ("clé: [{0}], valeur: [{1}]". Format (parties [0], parties [1]) ) IndexError: index de la liste hors limites


Cette erreur signifie que la longueur des parties est inférieure à 2 , donc la ligne ne contient très probablement pas de caractère : , décommentez cette impression pour la vérifier.


Sûr va vérifier .. Merci pour votre aide :)



1
votes

Cela peut fonctionner:

Key 0 = one
Key 1 = three
Key 2 = five
Key 3 = seven
Key 4 = nine
Key 5 = sample

Value 0 = two
Value 1 = four
Value 2 = six
Value 3 = eight
Value 4 = ten
Value 5 = demo

Le résultat est:

sp = open ("sampletxt.txt", "r")
x=0
key=[]
value=[]
try:
    while True:
        text_line = sp.readline()
        if text_line:
            text_line = ''.join(text_line)
            text_line = text_line.split()
            text_line = ''.join(text_line).split(':')
            key.append(text_line[0])
            value.append(text_line[1])
            x += 1
        else:
            for i in range(x):
                print("Key {} = {}".format(i,key[i]))
            print("")
            for i in range(x):
                print("Value {} = {}".format(i,value[i]))
            break
finally:
    sp.close()

qui est similaire à votre demande

p >


3 commentaires

Parfait et le code fonctionne correctement. Merci SiyuLiu :)


C'est mon plaisir.


Salut, je suis confronté à un problème lorsque la valeur a un espace blanc entre deux chaînes, le blanc est ignoré dans la logique du code que vous avez donné. Pouvez-vous s'il vous plaît conseiller? Exemple, si la valeur est hello world, alors elle est considérée comme helloworld. Mais j'ai besoin de la valeur réelle, y compris les espaces blancs.



0
votes


0 commentaires