3

文字列をループしてダブルスペースをシングルスペースに置き換える際のオーバーヘッドには、時間がかかりすぎます。文字列の複数のスペースを単一の空白に置き換えようとするより速い方法はありますか?

私はこのようにやっていますが、それは長すぎて無駄です:

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

2 に答える 2

15

これを見てください

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'

このメソッドsplit()は、strを区切り文字として使用して、文字列内のすべての単語のリストを返します(指定しない場合はすべての空白で分割します)

于 2013-03-18T04:18:37.350 に答える
5

正規表現の使用:

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

' +'1つ以上のスペース文字に一致します。

空白のすべての実行を次のように置き換えることもできます

str1 = re.sub('\s+', ' ', str1)
于 2013-03-18T04:20:44.940 に答える