J'ai créé un fichier texte vide et j'y ai enregistré des éléments. Voilà ce que j'ai sauvegardé :

 Saish ddd TestUser ForTestUse

Il y a un espace avant ces mots. Quoi qu'il en soit, je voulais savoir comment lire seulement 1 MOT dans le fichier texte en utilisant python. Voici le code que j'ai utilisé :

#Uncommenting the line below the line does literally nothing.

import time
#import mmap, re

print("Loading Data...")
time.sleep(2)

with open("User_Data.txt") as f:
    lines = f.read() ##Assume the sample file has 3 lines
    first = lines.split(None, 1)[0]

print(first)


print("Type user number 1 - 4 for using different user.")
ans = input('Is the name above correct?(y/1 - 4) ')
if ans == 'y':
    print("Ok! You will be called", first)
    
elif ans == '1':
    print("You are already registered to", first)
    
elif ans == '2':
    print('Switching to accounts...')
    time.sleep(0.5)
    with open("User_Data.txt") as f:
        lines = f.read() ##Assume the sample file has 3 lines
        second = lines.split(None, 2)[2]

    print(second)
    #Fix the passord issue! Very important as this is SECURITY!!!
    

Quand j'exécute le code, ma sortie est:

Loading Data...
Saish
Type user number 1 - 4 for using different user.
Is the name above correct?(y/1 - 4) 2
Switching to accounts...
TestUser ForTestUse

Comme vous pouvez le voir, il affiche à la fois "TestUser" et "ForTestUse" alors que je veux seulement qu'il affiche "TestUser".

0
Saish Shankar 3 oct. 2021 à 01:39

2 réponses

Meilleure réponse

Lorsque vous donnez une limite à split(), tous les éléments de cette limite à la fin sont combinés. Alors si tu fais

lines = 'Saish ddd TestUser ForTestUse'
split = lines.split(None, 2)

Le résultat est

['Saish', 'ddd', 'TestUser ForTestUse']

Si vous voulez juste le troisième mot, ne limitez pas split().

second = lines.split()[2]
1
Barmar 2 oct. 2021 à 22:45

Vous pouvez l'utiliser directement sans passer aucun

lines.split()[2]

Je comprends votre passage (Aucun, 2) car vous voulez obtenir Aucun s'il n'y a pas de valeur à l'index 2, Un moyen simple de vérifier si l'index est disponible dans la liste

Python 2

2 in zip(*enumerate(lines.split()))[0]

Python 3

2 in list(zip(*enumerate(lines.split())))[0]
0
Gururaj Jeerge 2 oct. 2021 à 23:41