user8435959
user8435959

Reputation: 165

Retrieving data from files

Below is the code to a part of a program. This part prints the line the user enters (same as idnum). It retrieves the data from all the 6 files fine, however when it prints them there is line separating each piece of data. What do I need to do to make the program print the data without line spacing.

1 smith

1 john

1 02/01/1234

1 4 pigeon street

1 123456765432234432

1 male

idnum= int(input("Enter id number: "))

def display():
    line = open("Surname", "r").readlines()[idnum-1]
    print (line)
    line = open("Forename", "r").readlines()[idnum-1]
    print (line)
    line = open("Date of birth", "r").readlines()[idnum-1]
    print (line)
    line = open("Home address", "r").readlines()[idnum-1]
    print (line)
    line = open("Home phone number", "r").readlines()[idnum-1]
    print (line)
    line = open("Gender", "r").readlines()[idnum-1]
    print (line)



import os.path
if os.path.exists("Surname"):
    display()
else:
    print("No data exists.")

Upvotes: 1

Views: 42

Answers (2)

daneeq
daneeq

Reputation: 61

Your readlines() is picking up the newline character from the file. To read it without the \n character, follow the advice of this question and use read().splitlines() instead:

import os

idnum= int(input("Enter id number: "))

def display():
    for file in ["Surname", "Forename", "Date of birth", "Home address", "Home phone number", "Gender"]:
        with open(file) as f:
            print(f.read().splitlines()[idnum-1])

if os.path.exists("Surname"):
    display()
else:
    print("No data exists.")

Upvotes: 2

Rahul
Rahul

Reputation: 11560

You can specify end in print function(default might be '\n'. I also compacted your code.

from os import path

idnum= int(input("Enter id number: "))

def display():
    for file in ["Surname", "Forename", "Date of birth", "Home address", "Home phone number", "Gender"]:
        with open(file) as f:
            print(f.readlines()[idnum-1], end=' ')

if os.path.exists("Surname"):
    display()
else:
    print("No data exists.")

Upvotes: 2

Related Questions