Elliott
Elliott

Reputation: 1

How do I print the output in one line as opposed to it creating a new line?

For some reason, I cannot seem to find where I have gone wrong with this program. It simply takes a file and reverses the text in the file, but for some reason all of separate sentences print on a new and I need them to print on the same line.

Here is my code for reference:

def read_file(filename):
    try:
        sentences = []
        with open(filename, 'r') as infile:
            sentence = ''
            for line in infile.readlines():
                if(line.strip())=='':continue
                for word in line.split():

                    if word[-1] in ['.', '?', '!']:
                        sentence += word
                        sentences.append(sentence)
                        sentence = ''
                    else:
                        sentence += word + ' '
        return sentences
    except:
        return None


def reverse_line(sentence):
    stack = []
    punctuation=sentence[-1]
    sentence=sentence[:-1].lower()
    words=sentence.split()
    words[-1] = words[-1].title()
    for word in words:
        stack.append(word)
    reversed_sentence = ''
    while len(stack) != 0:
        reversed_sentence += stack.pop() + ' '
    return reversed_sentence.strip()+punctuation


def main():
    filepath = input('File: ')
    sentences = read_file(filepath)
    if sentences is None:
        print('Unable to read data from file: {}'.format(filepath))
        return
    for sentence in sentences:
        reverse_sentence = reverse_line(sentence)
        print(reverse_sentence)


main()

Upvotes: 0

Views: 54

Answers (1)

Masood Khaari
Masood Khaari

Reputation: 3061

You can use the end keyword argument:

print(reverse_sentence, end=' ')

The default value for the end is \n, printing a new-line character at the end.

https://docs.python.org/3.3/library/functions.html#print

Upvotes: 1

Related Questions