こんにちは。PyQサポートです。
PyQのクエスト(問題)について、ときどき「模範解答の通りに書いたのに動きません!」というお問い合わせがあります。
大抵の場合、どこかが模範解答と異なっているのですが、先日 split()
を strip()
と間違えているため正しく動作していなかった、というケースがありました。
この2つのメソッドはどちらも文字列のメソッドですが、名前が似ているため、最初のうちは混同してしまう人もいるようです。
そこで、今回はこの2つのメソッドについて解説します。
split() メソッド
このメソッドは文字列を区切り文字で分割したリストを返すメソッドです。
split
は「分割する」という意味の英語なので、この英単語を知っていれば覚えやすいでしょう。
このメソッドの基本的な使い方は、以下のとおりです。
split()の基本的な使い方
文字列.split(区切り文字)
このメソッドは、CSVファイルなど特定の区切り文字で区切られたデータを処理するときに便利です。
以下にカンマ(,
)区切りの文字列を分割する具体例を示します。
>>> "りんご,みかん,いちご".split(",") ['りんご', 'みかん', 'いちご']
split() の引数を省略した場合
split()
の引数を省略したときは、連続する空白文字が区切り文字になります。ここでいう「空白文字」とは、半角スペース、全角スペース、タブ文字、改行文字などです。
以下は、連続する半角スペースがデータの区切りになっている例です。
>>> "りんご みかん いちご".split() ['りんご', 'みかん', 'いちご']
半角スペースが連続していても、意図通りにデータが分割されていますね。
strip() メソッド
このメソッドは文字列の先頭・末尾から特定の文字を除去した文字列を返すメソッドです。
strip
は「裸にする」や「はぎ取る・取り去る」という意味の英語なので、この英単語を知っていれば覚えやすいでしょう。
このメソッドの基本的な使い方を2つ紹介します。
使い方1: 引数を指定しない
1つ目は、以下のように引数を指定しない方法です。
strip()の基本的な使い方1
文字列.strip()
この場合、文字列の先頭・末尾における連続する空白文字が除去対象となります(「空白文字」については前述のsplit()
の場合と同じです)。
strip()
メソッドは、ファイルなどから読み込んだデータの事前処理として、余計なスペースや改行を除去するときに便利です。このようなケースでは、引数を指定せずにstrip()
を呼び出せばよいでしょう。
>>> "\t\t先頭・末尾の 空白文字が除去されます \n".strip() '先頭・末尾の 空白文字が除去されます'
\t
はタブ文字、\n
は改行文字なので、これらも除去されることがわかりますね。また先頭・末尾以外の空白文字はそのままであることも確認できました。
使い方2: 除去対象の文字集合を指定する
もし、空白文字以外を除去したい場合は、以下のように除去したい文字を指定できます。
strip()の基本的な使い方2
文字列.strip(除去したい文字)
「除去したい文字」は一度に複数書けます。例えば「<
!
-
>
(半角スペース)」 の5文字を除去したい場合、「除去したい文字」は
"<!-> "
のように指定します。
>>> "<!--- 前後の<>などを除去 --->".strip("<!-> ") '前後の<>などを除去'
このように、先頭・末尾に「除去したい文字」に指定した文字が連続していれば、まとめて除去されます。
関連するメソッド
strip()
に関連するメソッドとして、lstrip()
、rstrip()
があります。
使い方はstrip()
と同じです。しかし、strip()
が先頭・末尾の両方から文字を除去するのに対し、lstrip()
は先頭から、rstrip()
は末尾からのみ文字を除去します。状況に応じて使い分けるとよいでしょう。
なお、lstrip
の「l」は「left」、rstrip
の「r」は「right」です。先頭は文字列の左側(left)、末尾は右側(right)と考えれば覚えやすいですね。
まとめ
今回のまとめです。メソッド名の元になっている英単語の意味を知り、それぞれ区別して使えるようになりましょう。
- split() : 文字列を区切り文字で分割したリストを返すメソッド
- strip() : 文字列の先頭・末尾から特定の文字を除去した文字列を返すメソッド
- 関連するメソッド : lstrip(), rstrip()
参考リンク
各メソッドの公式ドキュメントへのリンクです。
- str.split
- str.strip