Remove \n from triple quoted string in python

10,391

Solution 1

str.strip removes whitespace from the start and the end of the string.

>>> string
'\nHello World\n123\nHelloWorld\n'
>>> string.strip()
'Hello World\n123\nHelloWorld'

If you want to remove the new line characters inside of the string, you can replace them by something else using str.replace:

>>> string.replace('\n', ' ')
' Hello World 123 HelloWorld '

Solution 2

I would like to point out that, depending on how that triple-quoted string is being used, you could avoid the issue entirely.

In Python triple-quoted strings, you can put a backslash ("\") at the end of a line to ignore the line break. In other words, you can use it to put a line break at that spot in your code without making a line break in your string.

For example:

"""line 1 \
line 2 \
line 3"""

will actually become

line 1 line 2 line 3

if printed or written to some file or other output.

Using it this way can eliminate any need for a function to replace the line breaks, making your code clearer and cleaner.

EDIT:

If you're using backslash line continuations like this, you can also use simple single-quoted strings the same way;

"line 1 \
line 2 \
line 3"

is also equivalent to

line 1 line 2 line 3

Solution 3

Use translate instead of replace for this kind of operation.

>> string.translate(None, "\n")
Hello World123HelloWorld

You will realize how fast translate is when you work with big files.

Share:
10,391
Nir
Author by

Nir

Updated on July 01, 2022

Comments

  • Nir
    Nir almost 2 years

    I have the following string:

    string = """
    Hello World
    123
    HelloWorld
    """
    

    I want to clear all the line-breaks from the string in python.

    I tried

    string.strip()
    

    But it's not working as desired.

    What I should do?

    I'm using python 3.3

    Thanks.

  • poke
    poke over 10 years
    That’s no different to print(string.strip()).
  • shad0w_wa1k3r
    shad0w_wa1k3r over 10 years
    But what if he wants to use individual lines?
  • poke
    poke over 10 years
    That would be a different problem and nothing in the question suggests OP wants to do that.
  • shad0w_wa1k3r
    shad0w_wa1k3r over 10 years
    I just wanted to show another way of doing it while describing it's specific use. Partial answer.
  • Dani
    Dani over 7 years
    Why would one need triple quotes AND backslash? Why not just backslash?
  • Variadicism
    Variadicism over 7 years
    @AllDaniSpringer You could also do a single quoted string and it would work the same way; I just kept the triple quotes because that's what the question was asking about. I'll make an edit to mention that, though.