Home > Net >  How to read ONLY 1 word in python?
How to read ONLY 1 word in python?

Time:10-03

I've created an empty text file, and saved some stuff to it. This is what I saved:

 Saish ddd TestUser ForTestUse

There is a space before these words. Anyways, I wanted to know how to read only 1 WORD in the text file using python. This is the code I used:

#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!!!
    

when I run the code, my output is:

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

as you can see, it diplays both "TestUser" and "ForTestUse" while I only want it to display "TestUser".

CodePudding user response:

When you give a limit to split(), all the items from that limit to the end are combined. So if you do

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

the result is

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

If you just want the third word, don't give a limit to split().

second = lines.split()[2]

CodePudding user response:

You can use it directly without passing any None

lines.split()[2]

I understand your passing (None, 2) because you want to get None if there is no value at index 2, A simple way to check if the index is available in the list

Python 2

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

Python 3

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