3

The overhead in looping through the string and replacing double spaces with single ones is taking too much time. Is a faster way of trying to replace multi spacing in strings with a single whitespace?

I've been doing it like this, but it's just way too long and wasteful:

str1 = "This is    a  foo bar   sentence with  crazy spaces that  irritates   my program "

def despace(sentence):
  while "  " in sentence:
    sentence = sentence.replace("  "," ")
  return sentence

print despace(str1)
alvas
  • 115,346
  • 109
  • 446
  • 738

2 Answers2

15

look at this

In [1]: str1 = "This is    a  foo bar   sentence with  crazy spaces that  irritates   my program "

In [2]: ' '.join(str1.split())
Out[2]: 'This is a foo bar sentence with crazy spaces that irritates my program'

The method split() returns a list of all the words in the string, using str as the separator (splits on all whitespace if left unspecified)

avasal
  • 14,350
  • 4
  • 31
  • 47
5

Using regular expressions:

import re
str1 = re.sub(' +', ' ', str1)

' +' matches one or more space characters.

You can also replace all runs of whitespace with

str1 = re.sub('\s+', ' ', str1)
Adam Obeng
  • 1,512
  • 10
  • 13