入力フォームから文字列を取得して何らかの処理を実行したり、複数行のテキストデータを行毎、更に単語毎に分解してテキスト解析を行ったりする際、得られた文字列の末尾にスペースや改行(\n)が入ってしまい、思ったような結果が得られないことがあります。
このような場合に役に立つのが、文字列のメソッドの
- str.strip(), str.ltrip(), str.rtrip()
- str.replace()
です。いずれも任意の文字(列)を削除することが出来ますが、それぞれ動きが異なるので、用途に応じて使い分けると便利です。
確認した環境
- OS: Ubuntu 16.04LTS
- Python3.7.4
先頭と末尾に含まれる文字列の削除(str.strip)
任意の文字列を削除
str.strip() は、先頭と末尾から特定の文字列を削除します。
使い方は以下です。
str.strip([chars])
- 引数charsは、削除したい文字の組み合わせを指定します
- 先頭/末尾から引数charsに含まれない文字に達するまで文字が削除されます
- 返り値は、先頭/末尾から文字を削除したコピーを返します(=元の文字列は変更されない)
例を以下に示します。
>>> s= 'abcdefbca'
# 'abc'の組み合わせにマッチする文字列を削除
>>> s.strip('abc')
'def'
# この場合は末尾は'a'のみ削除('h'は引数charに含まれないため)
>>> s = 'abcdefgha'
>>> s.strip('abc')
'defgh'
# 元の文字列は変更されません
>>> s
'abcdefgha'
空白文字を削除
charsが省略されるかNoneの場合は、空白文字が削除されます。
# 先頭と末尾の半角スペース
>>> s = ' abc '
>>> s.strip()
'abc'
# 末尾の改行マーク
>>> s = 'abc\n'
>>> s.strip()
'abc'
# 末尾のタブ
>>> s = 'abc\t'
>>> s.strip()
'abc'
<参考>
空白文字は、半角スペース、全角スペース、改行(\n)、改ページ(\f)、タブ(\t)、垂直タブ(\v)、復帰(\r)を表します。
ファイルから読み込んだ文字列に改行マークが付いていた場合に、それを削除する際に使えそうです。
先頭の文字列を削除(str.lstrip)
先頭の文字列だけを削除する場合は、str.lstrip() を使います。
使い方はstr.strip()と同じです。
・任意の文字(列)を削除する場合
>>> s= 'abcdefbca'
#先頭の文字列だけ削除
>>> s.lstrip('abc')
'defbca'
#元の文字列は変更されません
>>> s
'abcdefbca'
・空白文字の削除する場合
>>> s = ' abc '
# 引数を省略すると先頭の空白文字が削除されます。
>>> s.lstrip()
'abc '
末尾の文字列を削除(str.rstrip)
末尾の文字列だけを削除する場合は、str.rstrip() を使います。
使い方はstr.strip()と同じです。
・任意の文字(列)を削除する場合
>>> s= 'abcdefbca'
#末尾の文字列だけ削除
>>> s.rstrip('abc')
'abcdef'
#元の文字列は変更されません
>>> s
'abcdefbca'
・空白文字の削除する場合
# 引数を省略すると末尾の空白文字が削除されます。
>>> s = ' abc '
>>> s.rstrip()
' abc'
特定の文字列を全て削除する(replace()を使った方法)
特定の文字列を全て削除するには、str.replace()を使って、対象となる文字列を空白に置き換える方法があります。
>>> s = 'one-two-three'
# 文字列'two'を空白に置き換える
>>> s.replace('two', '')
'one--three'
# 元の文字列は変更されません
>>> s
'one-two-three'
まとめ
文字列から任意の文字や空白文字を削除する方法についてまとめました。
- str.strip()、str.lstrip()、str.rstrip()を使って文字列の先頭または末尾から特定の文字列を削除
- str.replace()を使って空白と置き換える
コメント
[…] 半角スペースで区切った引数を取得し、それぞれに空行を追加しています。また、最後の空行を消す方法については以下を参考にさせていただきました。『【Python】 特定の文字列や空白文字を削除する (strip, rstrip, lstrip、replace) |… […]