【Python】文字列 strクラスのメソッド【基本講座】

Python

【Python】文字列 strクラスのメソッド【基本講座】

Pythonは、文字列操作に関しては、他の言語よりも長けていると言えます。
Python3になってから特にそれは顕著になりました。
今回から数回に分けて文字列操作に書いていきます。
ここを極めるとほぼPythonは使えると思えるくらい重要なセクションですのでがんばって覚えましょう。

出典:http://www.photo-ac.com/

文字列操作の基本

strクラス

文字列といえば、なんて想像するでしょうか?
他のプログラミング言語から来た人は、stringと答えるのでしょうか。
それは、おおよそ正解だと思います。PythonでもTYPE関数で文字列を引数に実行すると、 と出ます。つまりPythonでは、文字列はstrクラスのインスタンスと言えます。

# 文字列"hoge"の型をを調べる。

type("hoge")

>> <class 'str'>  # str型

strクラスの便利なメソッド一覧

count(文字列, 開始, 終了) 文字列内に引数で指定した文字列が出現する回数を返す。
endswith(文字列) 文字列が引数で指定した文字列で終わればTrue。そうでなければFalse。
find(文字列) 文字列内に引数で指定した文字列が含まれていればTrue。そうでなければFalse。
join(イテラブルなオブジェクト) イテラブルなオブジェクトの要素を文字列で連結して返す。
lower() 文字列を小文字にして返す。
replace(文字列1, 文字列2) 文字列内の文字列1を文字列2に置換して返す。
split() 文字列をセパレータで分割して返す。
startswith(文字列) 文字列が引数で指定した文字列で始まればTrue。そうでなければFalse。
upper() 文字列を大文字にして返す。

文字列から文字・文字列を取り出すメソッド

forループを使って1文字ずつ取り出す

文字列から文字を取り出すメソッドは、forループで1文字ずつ取り出します。

例えば、こんな文字列を取り出すと

# 文字列に2バイト文字を混ぜてみる。
s="aあbいえおbif"
for i in s:
    print(i)

>> a
あ
b
い
え
お
b
i

このように半角、全角を1文字とみなして、先頭から1文字ずつ取り出していることが分かります。

また、文字列はタプルやリストと同様にイテラブルなオブジェクトであるからこのような操作が可能であると言えます。

指定した範囲の文字列を取り出す

Pythonでは、指定した範囲の文字列を取り出すことができます。

文字列[開始:終了]

s="123456789"

print(s[1:4])

>> 234

例では、数字で取り出しましたが、当然文字でも同じです。

文字列の検索

Pythonでは、文字列を検索する方法として、2つ用意されています。

in演算子

文字列1 in 文字列2
という書式で表され、True or False で判定されます。

print("あい" in "あいうえお")

>> True
print("かき" in "あいうえお")

>> False
find()メソッド

find()メソッドの良いところは、in演算子では、文字列の位置までわからないのに対して、文字列の位置(インデックス)を調べることが可能なところです。

s1 = "あいうえお"
s2 = "うえ"

index = s1.find(s2)

print(index)

>> 2

find()で見つからなかった場合は、-1 を返します。

他の文字列に埋め込む

文字列を埋め込むといっても文字と文字の連結にすぎません。
極端に言うと、+演算子を使って従来通り連結しることや文字列の繰り返しなどは、*演算子で行うのもいいかと思います。

しかし、複雑な文字列を構成するには、厳しく感じるかもしれません。
そこで、Pythonには、strクラスにあるformat()を使用します。

print("あい{}うえお".format("hoge"))

>> あいhogeうえお

{} は置換フィールドと呼ばれており、format(文字列)の部分が置換されるのです。
これの便利なところは、{}を複数持ってよいところです。
つまり、

print("あい{}うえお{}{}".format("hoge", "hello", "こんにちわ!"))

>> あいhogeうえおhelloこんにちわ!

format()にカンマ区切りで文字列を用意すると前から順に{}に置換されていくのです。

基本は前から順番に置換なのですが、{}に数字を入れることによって、その順番に置換することもできます。

print("あい{0}うえお{2}{1}".format("hoge", "hello", "こんにちわ!"))

>> あいhogeうえおこんにちわ!hello

ただし、下記のような記述はできません。

# {0}で0を抜いてみた!
print("あい{}うえお{2}{1}".format("hoge", "hello", "こんにちわ!"))

>> ValueError: cannot switch from automatic field numbering to manual field specification

文字列の長さを求めるメソッド

len()を使うと簡単に求めることができます。アクセスの仕方は、配列と同じで、最初の文字は、「0」。最後の文字のアクセスは、「len(文字列) – 1」 とします。

s="aあbいえおbif"

print(len(s))

>> 9

Pythonおすすめ書籍

最初の2冊は初心者向けです。Effectiv Pythonはこの2冊を終えてから読むとかなりわかりやすく感動できると思います。

基礎 Python (IMPRESS KISO SERIES)

新品価格
¥6,200から
(2020/4/21 20:50時点)

入門 Python 3

新品価格
¥4,070から
(2020/4/21 20:53時点)

Effective Python ?Pythonプログラムを改良する59項目

新品価格
¥3,520から
(2020/4/21 20:52時点)

独学に限界を感じていませんか?

プログラミング初学者がもっとも陥りやすいのは、挫折です。

なぜ?挫折するのでしょうか?

それは独学だけでは、限界があるからです。

でも、あきらめてはそこで終わりです。

プログラミング言語習得には、メンターと呼ばれる教えてくれる人間が必要です。メンターがいれば、挫折する確率がグンと低くなります。

困ったときに、いつでも教えてくれる先生がいれば心強いと思いませんか?

でも、先生って、学校行く時間もないし、、、そんなこと思っていませんか?
今は、Webでプログラミングが学べる時代なんですよ!

でも、お高いんでしょ?

うーん。これは考え方なのかもしれないんですが、例えば、こう考えてはどうでしょうか?
スクール代金が1コース20万円として、その後、ITエンジニアに就職したら、平均30万円以上は、稼げるのですぐに元が取れますよね?
この数値は、リクナビなど転職サイトを検索すればすぐ出てくる数値です。

今一時の出し渋りにより、一生の賃金を損することになるか、倍以上手に出来るかは、自明ですよね?

でも、どこが良いのかわからない。

そこで、厳選したプログラミングスクールと動画サイトをご紹介いたします。

タイトルとURLをコピーしました