Remove all line breaks from a long string of text

Basically, I’m asking the user to input a string of text into the console, but the string is very long and includes many line breaks. How would I take the user’s string and delete all line breaks to make it a single line of text. My method for acquiring the string is very simple.

string = raw_input("Please enter string: ")

Is there a different way I should be grabbing the string from the user? I’m running Python 2.7.4 on a Mac.

P.S. Clearly I’m a noob, so even if a solution isn’t the most efficient, the one that uses the most simple syntax would be appreciated.

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

How do you enter line breaks with raw_input? But, once you have a string with some characters in it you want to get rid of, just replace them.

>>> mystr = raw_input('please enter string: ')
please enter string: hello world, how do i enter line breaks?
>>> # pressing enter didn't work...
...
>>> mystr
'hello world, how do i enter line breaks?'
>>> mystr.replace(' ', '')
'helloworld,howdoienterlinebreaks?'
>>>

In the example above, I replaced all spaces. The string 'n' represents newlines. And r represents carriage returns (if you’re on windows, you might be getting these and a second replace will handle them for you!).

basically:

# you probably want to use a space ' ' to replace `n`
mystring = mystring.replace('n', ' ').replace('r', '')

Note also, that it is a bad idea to call your variable string, as this shadows the module string. Another name I’d avoid but would love to use sometimes: file. For the same reason.

Method 2

You can try using string replace:

string = string.replace('r', '').replace('n', '')

Method 3

You can split the string with no separator arg, which will treat consecutive whitespace as a single separator (including newlines and tabs). Then join using a space:

In : " ".join("nnsome    text rn with multiple whitespace".split())
Out: 'some text with multiple whitespace'

https://docs.python.org/2/library/stdtypes.html#str.split

Method 4

The canonic answer, in Python, would be :

s = ''.join(s.splitlines())

It splits the string into lines (letting Python doing it according to its own best practices). Then you merge it. Two possibilities here:

  • replace the newline by a whitespace (' '.join())
  • or without a whitespace (''.join())

Method 5

updated based on Xbello comment:

string = my_string.rstrip('rn')

read more here

Method 6

Another option is regex:

>>> import re
>>> re.sub("n|r", "", "Foonrbarnrbaznr")
'Foobarbaz'

Method 7

If anybody decides to use replace, you should try r'n' instead 'n'

mystring = mystring.replace(r'n', ' ').replace(r'r', '')

Method 8

A method taking into consideration

  • additional white characters at the beginning/end of string
  • additional white characters at the beginning/end of every line
  • various end-line characters

it takes such a multi-line string which may be messy e.g.

test_str = 'nhej ho n aaarn   an '

and produces nice one-line string

>>> ' '.join([line.strip() for line in test_str.strip().splitlines()])
'hej ho aaa a'

UPDATE:
To fix multiple new-line character producing redundant spaces:

' '.join([line.strip() for line in test_str.strip().splitlines() if line.strip()])

This works for the following too
test_str = 'nhej ho n aaarnnnnn an '

Method 9

The problem with rstrip is that it does not work in all cases (as I myself have seen few). Instead you can use –
text= text.replace(“n”,” “)
this will remove all new line n with a space.

Thanks in advance guys for your upvotes.

Method 10

Regular expressions is the fastest way to do this

s='''some kind   of
string with a bunchr of

  
 extra spaces in   it'''

re.sub(r's(?=s)','',re.sub(r's',' ',s))

result:

'some kind of string with a bunch of extra spaces in it'

Method 11

You can use

string= string.replace("n", str())

However, sometimes it
says

NoneType object has no attribute 'replace'

Thus, you shall be careful doing it.
But thanks for asking about this

raw_ input !


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x