Mike C. Fletcher
mcfletch at geocities.com
Sat Feb 23 22:20:54 CET 2002
Another approach to the original problem (replace X instances of Y with
a single instance of Y)...:
>>> import string
>>> data = 'this\n\nthose\n\n\nthem\ntheir\nthose'
>>> string.join(filter( None, string.split( data, '\n')), '\n')
Which has the virtue of letting you do the same thing with _any_
character or multi-character string just by parameterising '\n' in the
For your particular code (replace \n _and_ ' ' with single spaces), why not:
>>> data = 'this\n\nthose\n\n \nt s a s t o v hem\ntheir\nthose'
>>> string.join(string.split(data ), ' ')
'this those t s a s t o v hem their those'
Which replaces all whitespace runs with the single space...
Sheila King wrote:
> [posted and mailed]
> On 23 Feb 2002 11:52:10 -0800, bobnotbob at byu.edu (Bob Roberts) wrote in
> comp.lang.python in article
> <c4e6b17d.0202231152.5f87765d at posting.google.com>:
>>What would be a good way to replace every one or more spaces (" ") in
>>a string with just one space? Or replace any number of newlines with
> This function, which I'm currently using in an email filter, replaces
> all '\n' characters with a space, and then replaces all occurrences of
> more than one space with a single space.
> def remove_new_lines(searchstring):
> """ Returns a string without newlines or double spaces. """
> newline = '\n'
> # Replace newlines with spaces
> newstring = searchstring.replace(newline, ' ')
> # Replace multiple spaces with single spaces
> while newstring.find(' ') > -1:
> newstring = newstring.replace(' ', ' ')
> return newstring
> You could also do this with regular expressions, but this method only
> requires regular string operations.
Mike C. Fletcher
More information about the Python-list