Pythonで実行中の空白を折りたたむにはどうすればよいですか?
"a b c d e" --> "a b c d e"
仮定
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)よりも優れています:)
正規表現あり(タグのため):
re.sub('\s+', ' ', "a b c d e")
最初の要素の先頭のスペースと最後の要素の末尾のスペースを気にしない場合は、次を使用します。
re.sub('\s+(?=\s)', '', str)
その場合、先頭と末尾のスペースも削除するソリューションは次のとおりです。
re.sub('(?:^\s+|\s+(?=\s)|\s+$)', '', str)