Remove n from triple quoted string in python
Question:
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.
Answers:
Simple str.replace
:
string.replace('n', ' ')
str.strip
removes whitespace from the start and the end of the string.
>>> string
'nHello Worldn123nHelloWorldn'
>>> string.strip()
'Hello Worldn123nHelloWorld'
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 '
The main question is already answered, but I would like to add that if you plan on using the individual lines you might be better off doing this –
string = """
Hello World
123
HelloWorld
"""
for line in string.strip().split('n'):
print(line)
# do something with the line
Output from above code –
Hello World
123
HelloWorld
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.
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
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.
Simple str.replace
:
string.replace('n', ' ')
str.strip
removes whitespace from the start and the end of the string.
>>> string
'nHello Worldn123nHelloWorldn'
>>> string.strip()
'Hello Worldn123nHelloWorld'
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 '
The main question is already answered, but I would like to add that if you plan on using the individual lines you might be better off doing this –
string = """
Hello World
123
HelloWorld
"""
for line in string.strip().split('n'):
print(line)
# do something with the line
Output from above code –
Hello World
123
HelloWorld
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.
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