Python Technology

スマホでPythonコードを学ぼう!⑤文字列の操作

⑤文字列の操作

Pythonでの文字列の定義

Pythonでの文字列は、「'」または「"」で囲まれた文や文字のことです。

「'Hello World!'」や「"Pythonを学ぼう"」はどちらも文字列です。

少し注意が必要なのは、 単一引用符「’」が文字列に指定したい文自体に含まれていている場合です。例えば「'I'd like to learn Python'」では「'」がアポストロフィとして文に使われているため、文字列が上手く指定されません。文自体に「'」が使われている場合は二重引用符「"」を使うことにしましょう。

「 len(文字列)」で文字列の長さを求める

greet = "Hello World!"

と指定します。

文字列は句読点やスペースも一文字として数えます。「Hello World!」なので、12文字ですよね。

つまり、

print(len(greet))

で「12」が出力されます。「greet」の長さは「12」です。

「.index()」メソッド

Pythonの「.count()」を使うと文字列内の指定した文字の位置が求められます。

greet = "Hello World!"

と指定します。

アルファベット文字「l」は "Hello World!"内に3つ存在しますが、先頭から数えて一番先に来る「l」は3文字目の「l」です。Pythonのインデックスでは、もし文字列内に指定された文字が複数ある場合一番先に来るものを選択します。

また、Pythonでは先頭の文字は「1番」ではなく「0番」です。 つまり、「l」は文字列の3番目の文字ではありますが、インデックスは「2番」ということになります。最近のプログラミング言語ではインデックスの扱いはこのように統一されています。

つまり、

print(greet.index("l"))

は「2」を出力します。

「.count()」メソッド

「.count()」を使うと文字列内の指定した文字の数が求められます。

例えば、

greet = "Hello World!"

と指定すると、

print(greet.count("o"))

は「2」を出力します。

print(greet.count("!"))

は「1」を出力します。

インデックスでスライスを行う

greet = "Hello World!"

と指定します。

「greet[2:7]」と入力すると、インデックス2で始まり、インデックス6で終わる文字列のスライスを出力します。

「[2:7]」とあるのに、インデックス2で始まり、インデックス6までで終わります。

ここで気をつけたいのはインデックススライスを行う場合、「範囲終わりのインデックスは範囲外」だということです。「◯〜△」だと「◯以上△未満」ということです。ほとんどすべてのプログラミング言語で同様の扱いをします。

範囲始まりのインデックスを省略し範囲指定を「:(範囲終わりのインデックス)」とすると、先頭のインデックス(0番目)から範囲終わりのインデックスまでのスライスが得られます。範囲終わりのインデックスも省略した場合、つまり「:」出家の場合文字列の最初から最後までのスライスが得られます。

負のインデックス

インデックススライスを行う場合、「負のインデックス」も用いることができます。負のインデックスは文字列の一番最後の文字が「-1番目」と定義され、最後から2番目の文字が-2、最後から3番目の文字が-3というような順番になります。

greet = "Hello World!"

と指定します。

例えば、「greet[-3]」は「最後から3番目の文字」を意味するので、「l」となります。

少し練習をしてみましょう

拡張スライス構文

greet = "Hello World!"

と指定します。

「greet[2:7]」と入力すると、インデックス2で始まり、インデックス6で終わる文字列のスライスを出力することは分かりましたよね。

では、スライスの範囲指定に項目を足していきます。

「greet[2:7:2]」と入力するとインデックス2で始まりインデックス6で終わる文字列のスライスを「1文字飛ばし」で出力します。

「greet[2:7:1]」と入力するとインデックス2で始まりインデックス6で終わる文字列のスライスを「0文字飛ばし」、つまり「greet[2:7]」を出力します。

インデックスで拡張スライスを行う場合は「[start:stop:step]」となるよう、「step(何文字飛ばしをするか)」を定めましょう。

文字列を逆さにする方法

プログラミング言語の「C」には文字列内の文字の順番を逆にする「strrev」という関数があるのですが、Pythonにそのようなメソッドは存在しません。

Pythonではスライス構文を上手く使用することにより、文字列を簡単に逆にすることができるんです。

greet = "Hello World!"

と指定します。

print(greet[::-1])

は文字列の最初から最後までのスライスを「-0文字飛ばし」で出力します。つまり、文字列の順番を逆にして出力してくれるのです。

「.upper()」と「.lower()」メソッド

「.upper()」メソッドを使うと文字列内のすべてのアルファベットが大文字に変換されます。

反対に、「.lower()」メソッドを使うと文字列内のすべてのアルファベットが小文字に変換されます。

greet = "Hello World!"

と指定します。

print(greet.upper())

は「HELLO WORLD!」と出力し、

print(greet.lower())

は「hello world!」と出力します。

それでは、少し練習してみましょう。

 

-Python, Technology
-, ,

© 2020 Buzzdoo