こんにちは、@Yoshimiです。
Pythonの基礎の基礎を覚書きしておきます。
Pythonは英語の文法に似ているとのことで他のプログラム言語より習得敷居が扱いやすいと言われているようです。
今回は、データ分析では必須!Pythonの基礎「文字の抽出」です。文字列の任意の部分の文字列を抽出する方法をご紹介します。メールアドレスの抽出や長文でのマスキングの際に任意文字をヒットさせるなど利用用途は様々です。
位置(文字数)を指定して抽出: インデックス、スライス
1 2 3 |
# 文字列 index指定 word = 'abcdefg123XYZ' word[0] |
‘a’
取得する位置を指定することも可能です。
1 |
word[10] |
‘X’
データ分析ではよく使う技術「スライシング」ですが、私は未だにパッとできるかというと不安です。
1 2 |
# スライシング word[:3] |
‘abc’
word[:3]では、前から3番目まで取得するという指定なのですが、最初は0と判定されているので、正確には0,1,2までなので、この場合、abcとなります。
1 2 |
# word = 'abcdefg123XYZ' word[5:] |
‘fg123XYZ’
word[5:]では前から5番目までを削除する(5番目以降を抽出する)です。
1 2 |
# word = 'abcdefg123XYZ' word[2:5] |
‘cde’
word[2:5]では2番目から5番目のひとつ前までです。
1 2 |
# word = 'abcdefg123XYZ' word[:-1] |
‘abcdefg123XY’
word[:-1]は最後の一つを抽出しないでそれ以外です。
1 2 |
# word = 'abcdefg123XYZ' word[-1] |
‘Z’
word[-1]は最後の一つを抽出するです。
では、大きすぎるインデックスを指定した場合はどうなるのかというとエラーになります。単純です。
1 2 3 4 5 6 7 8 9 |
# 大きすぎるインデックスを指定するとエラーになる word[30] --------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-22-87411394a9a4> in <module>() ----> 1 word[30] IndexError: string index out of range |
基礎的な文字抽出をご紹介しました。もっと柔軟な処理を行う正規表現というものがあります。文字列にマッチした文字のみを抽出する方法など様々な方法で文字抽出が可能です。
まとめ次第ブログでアップしていきます。