Home > Back-end >  Appending string to a line read from file places appended string on next line
Appending string to a line read from file places appended string on next line

Time:02-23

I have a .txt file like the following:

abc
def
ghi

Now, I want to add some string behind each row directly. However, my output is:

abc
---testdef
---testghi---test 

My code is as follows:

file_read = open("test.txt", "r")
lines = file_read.readlines()
file_read.close()
new_file = open("res.txt", "w")
for line in lines:
    new_file.write(line   "---test")  # I tried to add "\r" in the middle of them, but this didn't work.
new_file.close()

CodePudding user response:

You need to strip the new line using .rstrip():

for line in lines:
    new_file.write(f"{line.rstrip()}---test\n")

Then, res.txt contains:

abc---test
def---test
ghi---test

CodePudding user response:

What I understood is, you want to add a string behind a string, for example "abcd" should be changed into "---testabcd".

So the mistake you made is in new_file.write(line "---test"), if you want add string1 before a string2, then you have to specify string1 first then string2.

So change it tonew_file.write("---test" line)

Tip: Instead of using ' ' operator, use f strings or .format.

f"---test{line}" this is f string.

"Hello {friends}".format(friends="myname")


For use of '\r':

Whenever you will use this special escape character \r, the rest of the content after the \r will come at the front of your line and will keep replacing your characters one by one until it takes all the contents left after the \r in that string.

print('Python is fun')

Output: Python is fun

Now see what happens if I use a carriage return here

print('Python is fun\r123456')

Output: 123456 is fun

So basically, it just replaces indexes of string to character after \r.

  • Related