string substitutions

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')
'this\nthose\nthem\ntheir\nthose'
 >>>

Which has the virtue of letting you do the same thing with _any_ 
character or multi-character string just by parameterising '\n' in the 
above.

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...

Enjoy,
Mike


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
>>just one?
>>
> 
> 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
   http://members.rogers.com/mcfletch/






More information about the Python-list mailing list