今回は、Pythonで文字列の両端から文字を取り除く方法を検討します。
組み込みの String
型はPythonの重要な構造体であり、テキストデータを簡単に扱えるメソッドが組み込まれています。
プログラマが文字列の先頭または末尾から不要な文字を取り除きたい、つまり、特定の文字を取り除きたい状況はたくさんあります。
最も一般的なのは、文字列の両端から空白文字(スペース、タブ、改行文字など)を除去することです。
これは通常、ファイル、データベース、Webサービスから生のテキストデータをインポートした後や、余分なスペースという形でタイプミスを含む可能性のあるユーザー入力を受け付けた後に発生します。
これは、ここに見られるように String.strip()
メソッドのデフォルトの使用法で処理できます。
>>> orig_text = ' The cow jumped over the moon!
'
>>> print(orig_text.strip())
The cow jumped over the moon!
>>>
このメソッドは文字列の元の値を変更しないこと、つまり文字列をインプレースで変更しないことに注意してください。
これは単に、両端の空白を取り除いた新しい文字列を返すだけです。
このことは、元の文字列をプリントアウトすることで確認することができます。
>>> print(orig_text)
The cow jumped over the moon!
>>>
また、 strip
メソッドでは、どのような種類の文字を取り除くかを指定することができます。
これは、空白文字以外の文字を取り除きたい場合に便利です。
これを行うには、 String.strip()
メソッドに引数として文字を渡すことで、ストリップする文字を指定します。
>>> orig_text = '-----The cow jumped over the moon!$$$$$'
>>> print(orig_text.strip('-$'))
The cow jumped over the moon!
>>>
これは例えば、文字列の先頭や末尾にある、書式設定のために使用された文字を削除するのに便利です。
つまり、Markdownでフォーマットされた文字列がある場合、以下のように簡単にヘッダー構文を削除することができます。
>>> md_text = '### My Header Here' # Denotes an H3 header in Markdown
>>> print(md_text.strip('# '))
My Header Here
>>>
最後に、Pythonは String.rstrip()
と String.lstrip()
メソッドによって、文字列の片側だけから文字を取り除く方法を提供しています。
これらのメソッドは String.strip()
メソッドと全く同じように動作しますが、 String.rstrip()
は文字列の右側から、 String.lstrip()
は文字列の左側から文字を削除するだけです。
>>> orig_text = '*****The cow jumped over the moon!*****'
>>> print(orig_text.rstrip('*'))
*****The cow jumped over the moon!
>>> print(orig_text.lstrip('*'))
The cow jumped over the moon!*****
もう一度、元の文字列を表示して、これらの操作に影響されないことを確認できます。
>>> print(orig_text)
*****The cow jumped over the moon!*****
著者について
この記事は、コードを通じて人々の生活を向上させることに情熱を注ぐソフトウェアコンサルタント兼開発者、Jacob Stopakによって書かれました。
Jacob は Initial Commit という、好奇心旺盛な開発者が自分の好きなプログラムがどのようにコーディングされているかを学ぶためのサイトの作者です。
その注目すべきプロジェクトは、コードレベルで Git を学ぶことを支援します。