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)
0

2 Answers 2

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)

Sign up to request clarification or add additional context in comments.

Comments

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)

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.