5

Pythonで実行中の空白を折りたたむにはどうすればよいですか?

"a b   c   d      e" --> "a b c d e"
4

3 に答える 3

14

仮定

s = 'a b   c   d      e'

それから

' '.join(s.split())
'a b c d e'

指定された出力が得られます。

これは、split()を使用して文字列を個々の文字のリストに分割し、 join()関数を['a', 'b', 'c', 'd', 'e']使用してそれらを1つのスペースで文字列に再結合することで機能します。また、先頭または末尾の空白も処理します。split()

正規表現の「 2つの問題」の問題を回避するには、Simpleに基づく方がComplex (PythonのZen)よりも優れています:)

于 2012-07-22T19:14:53.163 に答える
5

正規表現あり(タグのため):

re.sub('\s+', ' ', "a b   c   d      e")
于 2012-07-22T19:18:32.280 に答える
0

最初の要素の先頭のスペースと最後の要素の末尾のスペースを気にしない場合は、次を使用します。

re.sub('\s+(?=\s)', '', str)

その場合、先頭と末尾のスペースも削除するソリューションは次のとおりです。

re.sub('(?:^\s+|\s+(?=\s)|\s+$)', '', str)
于 2012-07-22T19:36:15.533 に答える