Python 文字列の抽出
株式会社リュディアです。Python における文字列の抽出についてまとめてみます。文字列の基本についてのまとめは以下の記事を参考にしてください。
文字列の抽出操作の具体例から始めます。文字列に対して特定の場所にある要素へのアクセスは以下のように行います。
str = 'abcdefghijklmnopqrstuvwxyz'
print(str[0])
print(str[15])
>> a
>> p
文字列 str に対して 0 番目の要素と 15番目の要素の値を表示しています。開始が 0 であることにだけ注意すれば問題ないと思います。
末尾から何文字目という指定もできます。次の例を見てください。
str = 'abcdefghijklmnopqrstuvwxyz'
print(str[-1])
print(str[-2])
>> z
>> y
マイナス記号 '-' をつけると末尾から文字列の要素にアクセスできます。これはなかなか便利な機能です。
次に範囲を指定してみましょう。次の例を見てください。
str = 'abcdefghijklmnopqrstuvwxyz'
print(str[5:])
print(str[:4])
>> fghijklmnopqrstuvwxyz
>> abcd
str[5:] は 0 をスタートとして5文字目から末尾まですべて、str[:4] は 0 をスタートとして4文字目までを切り取ります。0 から数えて 4 番目の要素は含まれません。要注意です。では次の例を見てください。
str = 'abcdefghijklmnopqrstuvwxyz'
print(str[5:8])
>> fgh
str[5:8] は 0 をスタートとして 5, 6, 7 文字目を表現します。こちらも0から数えて 8番目の要素は含まれません。
次は先頭からの指定と末尾からの指定を混在させてみます。以下の例を見てください。
str = 'abcdefghijklmnopqrstuvwxyz'
print(str[3:-2])
>> defghijklmnopqrstuvwx
str[3:-2] は 0 をスタートとして 3文字目の d から末尾から 2文字目の x までの文字列を抽出します。
次に文字列から文字を抽出するステップ数を指定してみます。以下の例をみてください。
str = 'abcdefghijklmnopqrstuvwxyz'
print(str[:])
print(str[::2])
>> abcdefghijklmnopqrstuvwxyz
>> acegikmoqsuwy
最初の str[:] は文字列全てを表現しています。次の str[::2] は文字列から 2 つおきに抽出しています。二つ目のコロン : の後が抽出するステップ数を意味します。
次は文字列を反転してみましょう。以下の例を見てください。
str = 'abcdefghijklmnopqrstuvwxyz'
print(str[::-1])
>> zyxwvutsrqponmlkjihgfedcba
str[::-1] は文字列全体からステップ -1 で文字列を抽出しています。これは文字列を反転させていることになります。
最後に文字列がイミュータブルであることを確認してみます。以下の例を見てください。末尾の小文字の z を大文字の Z に書き換えようとしています。
str = 'abcdefghijklmnopqrstuvwxyz'
str[-1] = 'Z'
#以下はエラーメッセージ
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-36-ffef1cd6fba0> in <module>
1 str = 'abcdefghijklmnopqrstuvwxyz'
----> 2 str[-1] = 'Z'
TypeError: 'str' object does not support item assignment
文字列がイミュータブルであるためエラーが発生しています。言語によっては可能な操作ですが Python では実行できません。ご注意ください。ミュータブル、イミュータブルについては以下の記事でまとめていますので参考にしてください。
では、ごきげんよう。