简体   繁体   中英

How to fix the print statement so that it is in one line instead of two?

I am trying to figure out why my print statement is breaking into two seperate lines rather then just printing in one line. I wrote a for loop that bascially takes in a file with Websites like this

example0.com
example1.com
example2.com
example3.com
example4.com

and starts from the 2nd line and iterates through the file.

with open('examplefile') as second_start:
    next(second_start) 
    for line in second_start:
        print('"hostNames": [{"name":' + ' "' + str(line) + '",' + '" source": "DNS"}],')

The output of this is

"hostNames": [{"name": "example1.com
"," source": "DNS"}],
"hostNames": [{"name": "example2.com
"," source": "DNS"}],
"hostNames": [{"name": "example3.com
"," source": "DNS"}],
"hostNames": [{"name": "example4.com
"," source": "DNS"}],

The output I would like is if the print statment just printed it on one line like this

"hostNames": [{"name": "example1.com"," source": "DNS"}],
"hostNames": [{"name": "example2.com"," source": "DNS"}],
"hostNames": [{"name": "example3.com"," source": "DNS"}],
"hostNames": [{"name": "example4.com"," source": "DNS"}],

Any help is greatly appreciated.

Change

print('"hostNames": [{"name":' + ' "' + str(line) + '",' + '" source": "DNS"}],')

to

print('"hostNames": [{"name":' + ' "' + str(line).strip() + '",' + '" source": "DNS"}],')

The strip() will remove and leading or trailing spaces, \r , or \n . That being said I would recommend writing your print a little cleaner using f-strings. You need to double up any brackets to escape them though.

print(f'"hostNames": [{{"name": "{str(line).strip()}", " source": "DNS"}}],')

You can also just do .rstrip('\n') if you only want to remove the new line at the end.

Well, you can remove newline character from str(line) by using str(line).rstrip("\n") I know that you can use just .rstrip() but specifying "\n" will ensure that you're removing only newline character keeping other special characters untouched.

You can use the readlines() method, that returns a list containing each line in the file as a list item.

after that you can iterate through this list to get the values you need

with open('examplefile', 'r') as second_start:
     lines_list = second_start.readlines()
     for line in lines_list:
        print('"hostNames": [{"name":' + ' "' + line + '",' + '" source": "DNS"}],')

Your file is that:

example0.com
example1.com
example2.com
example3.com
example4.com

And it is equal to that:

example0.com\nexample1.com\nexample2.com\nexample3.com\nexample4.com

The \n character is a new line character. Look at that:

>>> print("Hello\nWorld")
Hello
World

So you should delete \n characters from your strings. You can do it by using str.rstrip("\n")

>>> s = "abc\n"
>>> s.rstrip("\n")
"abc"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM