Pythonの文字列型のメソッドを使ってみよう。

Pythonの文字列メソッド

今回からPythonのメソッドというものについて学びます。

メソッドというのは関数と少し似ているのですが、今はあまり気にしなくても大丈夫です。

メソッドというものを使えば、色々な処理を簡単に行うことができるということだけ知っておきましょう。

文字列型のメソッド

まずは文字列型のメソッドについて解説します。

以前にPythonの組み込み型というものを勉強しましたよね。

数値型や文字列型などいろんなものがありました。

実はこれらは全てオブジェクトというものでできています。

詳しくはクラスの所で解説しますので、今は気にしなくても大丈夫ですが、Pythonは全てオブジェクトでできているということは頭の片隅に入れておいて下さい。

format()メソッド

まずはformat()メソッドです。

format()メソッドを使いこなせば、文字列を可読性を高くしながら複雑な文字列を簡単に出力することができます。

シンプルなformat()メソッド

実際にコードを打って実行した方がわかりやすいのので、以下のコードを実行してみましょう。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

def main():
    print ('Hello, {}! Hello, {}!'.format('Mike', 'Jun'))
    
if __name__ == '__main__':
    main()

これを実行すると、Hello, Mike! Hello, Jun!と表示されます。

文字列の中にブレース{}が2カ所あります。

そして、文字列の後にピリオド.でformat()メソッドが連結されています。

format()メソッドの中にある2つの文字列が順番に{}の中に代入されて出力されるということですね。

{}の中にインデックス番号を指定する。

さきほどの書き方がもっともシンプルなformat()メソッドの使い方ですが、インデックス番号を指定する方法もあります。

さっそく以下のコードを実行してみましょう。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

def main():
    print ('Hello, {0}! Hello, {1}!'.format('Mike', 'Jun'))
    
if __name__ == '__main__':
    main()

これを実行するとさっきと同じように、Hello, Mike! Hello, Jun!と表示されます。

{}の中に0と1というインデックス番号が振られており、その中にformat()メソッドの中の引数が順番に代入されて表示されるということです。

なので、インデックス番号の順番を変えてみましょう。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

def main():
    print ('Hello, {1}! Hello, {0}!'.format('Mike', 'Jun'))
    
if __name__ == '__main__':
    main()

これを実行すると、Hello, Jun! Hello, Mike!と表示されます。

MikeとJunが入れ替わっって出力されていますよね。

インデックス番号を指定する場合、以下のように書くこともできます。

#!/usr/bin/env python
def main():
    print ('Hello, {0}! Good morning, {0}! \
Hello, {1}! Good morning, {1}!'.format('Mike', 'Jun'))
    
if __name__ == '__main__':
    main()

これを実行すると、Hello, Mike! Good morning, Mike! Hello, Jun! Good morning, Jun!と表示されます。

インデックス番号を指定する場合、{}の数と引数の数が同じでなくても大丈夫なんですね。

それから1点注意が必要です。

文字列が長いと見にくいので、途中で改行を入れています。

その開業の部分にバックスラッシュ\が入っています。

このバックスラッシュを入れると改行が無視されることになるので、途中で改行を入れてもエラーになりません。

Pythonでは1行の文字数を80文字以内にするという暗黙のルールがあります。80文字以内にした方が読みやすいからですね。

なので横に長くなり過ぎる場合には、途中でバックスラッシュ\を入れて改行するようにしましょう。

split()メソッド

split()メソッドを使うと文字列を分割することができます。

以下のコードを実行してみましょう。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

def main():
    l = 'Google Apple Facebook Amazon'.split()
    print(l, type(l))

    
if __name__ == '__main__':
    main()

これを実行すると、以下のように表示されます。

['Google', 'Apple', 'Facebook', 'Amazon'] <class 'list'>

この実行結果を見れば分かるように、split()メソッドを使えば、文字列をスペースで分割したリストを返します。

最後にtype()関数を使っています。type()関数を使えば型を調べることができます。変数lがリスト型であることが分かりますね。

split()メソッドは、デフォルトではスペースで分割するように指定されていますが、それを変更することもできます。

以下のコードを実行してみましょう。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

def main():
    l = 'Google,Apple,Facebook,Amazon'.split(',')
    print(l, type(l))

    
if __name__ == '__main__':
    main()

これを実行すると先ほどと同じ内容が表示されますよね。

つまり、文字列をsplit()メソッドで指定したカンマ,で区切れるのです。

join()メソッド

join()メソッドは、さっきのsplit()メソッドと反対で文字列を連結するメソッドです。

以下のコードを実行してみましょう。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

def main():
    str = ' '.join(['Google', 'Apple', 'Facebook', 'Amazon'])
    print(str)

    
if __name__ == '__main__':
    main()

これを実行すると、Google Apple Facebook Amazonと表示されます。

join()メソッドの中のリストが連結して出力されていますね。

スペースではなく、,-@などで連結したければ以下のように書きます。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

def main():
    str1 = ' '.join(['Google', 'Apple', 'Facebook', 'Amazon'])
    print(str1)

    str2 = ','.join(['Google', 'Apple', 'Facebook', 'Amazon'])
    print(str2)

    str3 = '-'.join(['Google', 'Apple', 'Facebook', 'Amazon'])
    print(str3)

    str4 = '@'.join(['Google', 'Apple', 'Facebook', 'Amazon'])
    print(str4)

    
if __name__ == '__main__':
    main()

これを実行すると、以下のように出力されます。

Google Apple Facebook Amazon
Google,Apple,Facebook,Amazon
Google-Apple-Facebook-Amazon
Google@Apple@Facebook@Amazon

もう説明しなくてもお分かりですよね。このようにjoin()メソッドでは、何で区切るかを指定することができるのです。

最後に

今回は文字列型のメソッドについて解説しました。

文字列型にあらかじめ用意されているメソッドは他にもたくさんあります。

必要になった時に使えるメソッドがないか調べてみて下さいね。

使える文字列メソッドはこちらのページに記載されています。

今はまだそこまで詳しく見る必要はありませんが、興味があれば流し読みしてみるといいかもしれません。

また、2週目に戻ってきた時には、たくさんの文字列メソッドを紹介させていただきますね。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする