文字列、両端、単語間のすべての空白を削除したいのですが。
私はこのPythonコードを持っています:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
しかし、それは文字列の両側の空白を削除するだけです。すべての空白を削除するにはどうすればよいですか?
文字列、両端、単語間のすべての空白を削除したいのですが。
私はこのPythonコードを持っています:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
しかし、それは文字列の両側の空白を削除するだけです。すべての空白を削除するにはどうすればよいですか?
回答:
先頭と末尾のスペースを削除する場合は、次を使用しますstr.strip()
。
sentence = ' hello apple'
sentence.strip()
>>> 'hello apple'
すべてのスペース文字を削除する場合は、次を使用しますstr.replace()
。
(これにより、「通常の」ASCIIスペース文字のみが削除され、他の空白は削除され' ' U+0020
ません)
sentence = ' hello apple'
sentence.replace(" ", "")
>>> 'helloapple'
重複したスペースを削除したい場合は、次を使用しますstr.split()
。
sentence = ' hello apple'
" ".join(sentence.split())
>>> 'hello apple'
sentence.join(str_list)
Pythonにstr_listのアイテムsentence
をセパレーターとして結合するように要求します。
スペースのみを削除するには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
の末尾から空白を削除したりすることもできます。
yourstr.translate(str.maketrans('', '', ' \n\t\r'))
代わりに、正規表現を使用して、これらの奇妙な空白文字にも一致させます。ここではいくつかの例を示します。
単語間であっても、文字列内のすべてのスペースを削除します。
import re
sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE)
文字列のBEGINNING内のスペースを削除します。
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の両方で機能します)
空白には、スペース、タブ、CRLFが含まれます。したがって、使用できるエレガントで1行の文字列関数はstr.translate
次のとおりです。
Python 3
' hello apple'..translate(str.maketrans('', '', ' \n\t\r'))
または徹底したい場合:
import string
' hello apple'..translate(str.maketrans('', '', string.whitespace))
Python 2
' hello apple'.translate(None, ' \n\t\r')
または徹底したい場合:
import string
' hello apple'.translate(None, string.whitespace)
\xc2\xa0
ans.translate( None, string.whitespace )
builtins.TypeError: translate() takes exactly one argument (2 given)
私だけのために生産します。ドキュメントでは、引数は変換テーブルであると述べています。string.maketrans()を参照してください。ただし、以下のAmnon Harelのコメントを参照してください。
' hello apple'.translate(str.maketrans('', '', string.whitespace))
注:複数回行う場合は、トランステーブルを格納する変数を作成することをお勧めします。
先頭と末尾から空白を削除するには、を使用しますstrip
。
>> " foo bar ".strip()
"foo bar"
import re
sentence = ' hello apple'
re.sub(' ','',sentence) #helloworld (remove all spaces)
re.sub(' ',' ',sentence) #hello world (remove double spaces)
さらに、ストリップにはいくつかのバリエーションがあります。
文字列のBEGINNINGおよびENDのスペースを削除します。
sentence= sentence.strip()
文字列のBEGINNING内のスペースを削除します。
sentence = sentence.lstrip()
文字列の末尾のスペースを削除します。
sentence= sentence.rstrip()
3つの文字列関数strip
lstrip
はすべて、rstrip
削除する文字列のパラメータを取得できます。デフォルトはすべて空白です。これは、何か特別なものを扱う場合に役立ちます。たとえば、スペースのみを削除して改行を削除することはできます。
" 1. Step 1\n".strip(" ")
または、文字列リストを読み取るときに余分なコンマを削除することもできます。
"1,2,3,".strip(",")
文字列、両端、単語間のすべての空白を削除します。
>>> import re
>>> re.sub("\s+", # one or more repetition of whitespace
'', # replace with empty string (->remove)
''' hello
... apple
... ''')
'helloapple'
Pythonドキュメント:
re
は以前に提案されたことは知っていますが、質問のタイトルに対する実際の答えは他のすべてのオプションの中で少し隠されていました。
hello apple
?helloapple
?