web-dev-qa-db-ja.com

Pythonの文字列からすべての空白を削除する

両端、単語の間にある文字列からすべての空白を削除します。

私はこのPythonコードを持っています:

def my_handle(self):
    sentence = ' hello  Apple  '
    sentence.strip()

しかし、それは文字列の両側の空白を削除するだけです。すべての空白を削除する方法

633
co2f2e

先頭と末尾のスペースを削除したい場合は、 str.strip() を使用してください。

sentence = ' hello  Apple'
sentence.strip()
>>> 'hello  Apple'

すべてのスペースを削除したい場合は、 str.replace() を使用してください。

sentence = ' hello  Apple'
sentence.replace(" ", "")
>>> 'helloapple'

重複したスペースを削除したい場合は、 str.split() を使用してください。

sentence = ' hello  Apple'
" ".join(sentence.split())
>>> 'hello Apple'
1382
Cédric Julien

スペースのみを削除するには を使用してください str.replace

sentence = sentence.replace(' ', '')

すべての空白文字 (スペース、タブ、改行など)を削除するには、 split を使用してから join を使用できます。

sentence = ''.join(sentence.split())

または正規表現:

import re
pattern = re.compile(r'\s+')
sentence = re.sub(pattern, '', sentence)

最初と最後から空白のみを削除したい場合は、 strip を使用できます。

sentence = sentence.strip()

文字列の先頭からのみ空白を削除するには lstrip を、文字列の末尾からの空白を削除するには rstrip を使用することもできます。

229
Mark Byers

別の方法としては、正規表現を使用して これらの奇妙な空白文字 と一致させることができます。ここではいくつかの例を示します。

単語の間であっても、文字列内のすべてのスペースを削除します。

import re
sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE)

文字列の先頭のスペースを削除します。

import re
sentence = re.sub(r"^\s+", "", sentence, flags=re.UNICODE)

文字列の終わりにあるスペースを削除します。

import re
sentence = re.sub(r"\s+$", "", sentence, flags=re.UNICODE)

文字列のBEGINNINGとENDの両方のスペースを削除します。

import re
sentence = re.sub("^\s+|\s+$", "", sentence, flags=re.UNICODE)

重複のないスペースのみを削除します。

import re
sentence = " ".join(re.split("\s+", sentence, flags=re.UNICODE))

(すべての例はPython 2とPython 3の両方で動作します)

74
Emil Stenström

空白には スペース、タブ、およびCRLF が含まれます。だから私たちが使うことができるエレガントで one-liner string関数は translate :です。

' hello  Apple'.translate(None, ' \n\t\r')

_または_ あなたが徹底的になりたいなら:

import string
' hello  Apple'.translate(None, string.whitespace)
32
MaK

先頭と末尾から空白を削除するには、stripを使用します。

>> "  foo bar   ".strip()
"foo bar"
18
wal-o-mat
' hello  \n\tapple'.translate( { ord(c):None for c in ' \n\t\r' } )

MaKはすでに上記の "translate"メソッドを指摘しました。そしてこのバリエーションはPython 3で動作します( this Q&A を参照)。

6
Amnon Harel

注意してください:

stripは、rstripとlstripを実行します(先頭と末尾のスペース、タブ、リターン、フォームフィードは削除しますが、文字列の途中では削除しません)。

スペースとタブを置き換えるだけでは、探しているものと一致するように見えるが同じではない隠されたCRLFになる可能性があります。

4
yan bellavance
import re    
sentence = ' hello  Apple'
re.sub(' ','',sentence) #helloworld (remove all spaces)
re.sub('  ',' ',sentence) #hello world (remove double spaces)
3
PrabhuPrakash

さらに、 strip にはいくつかのバリエーションがあります。

文字列のBEGINNINGとENDのスペースを削除します。

sentence= sentence.strip()

文字列の先頭のスペースを削除します。

sentence = sentence.lstrip()

文字列の終わりにあるスペースを削除します。

sentence= sentence.rstrip()

3つの文字列関数striplstrip、およびrstripはすべて、削除する文字列のパラメータを受け取ることができます。デフォルトはすべて空白です。これは、何か特別なことをしているときに役に立ちます。例えば、スペースだけを削除し、改行は削除できません。

" 1. Step 1\n".strip(" ")

あるいは、文字列リストを読み込むときに余分なコンマを削除することもできます。

"1,2,3,".strip(",")
2
Anna