Python3超入門【第2回】文字列

Pocket

まえがき

python3超入門の2回目です。今回もわかりやくPython3を解説することに全身全霊を尽くします。早速、文字列の続きからやっていきましょう。前回のPython3超入門【第1回】もよろしくお願いします。

Python3超入門

文字列への型変換

str()関数を使えば、例えば整数型や浮動小数点型など他の型を文字列型に変換できます。IDLEを使って実際に他の型を文字列型に変換してみましょう。

参考画像

Python3における文字型への型変換

Python3では文字型ではない値を指定して、print()を実行すると、内部的にstr()を呼び出して文字列に変換してから出力しています。

エスケープ文字

Python3には他の言語同様にエスケープ文字が用意されています。

エスケープ文字 意味
\n 改行
\t タブ
\’ ‘(シングルクォート)
\” “(ダブルクォート)
\\ \

よく使うエスケープ文字をまとめてみました。

\はWindows環境では半角の¥マークの時もあります。\と半角の¥マークは同じ意味です。

例えば、

とIDLEに入力すると、

こんにちは!
元気ですか?

と返ってきます。ちゃんと改行できていますね。

文字列の連結

Python3では「+」演算子を用いることで文字列を連結できます。サンプルコードで試してみましょう。

上記のコードをIDLEで試してみて下さい。文字列が連結されている様子が分かると思います。

尚、print()関数を利用して、print(s1, s2)と書くと、abc defと、2つの文字列の間に自動的にスペースが追加されます。

もちろん、print(s1 + s2)と入力すれば、文字列の間にスペースは挿入されません。

文字列の繰り返し

Python3では「*」演算子を利用することで文字列を繰り返すことができます。例えば、以下のようなサンプルコードをIDLEに入力してみて下さい。

abcabcabcabcabcという結果が返ってくるはずです。

文字列の中の1つの文字列を取り出す

文字列変数[数値]と書くことで数値で指定した1文字を取り出すことができます。最も左の文字を指定する場合には[0]を指定します。逆に最後の文字を指定する場合は[-1]を指定します。サンプルコードを見て、IDLEで試してみて下さい。

カウントは0文字目から始まります。0文字目はこの例では「a」です。従って、「c」は3文字目ではなく2文字目になります。1からではなく0から始まる点に注意しましょう。

文字列をスライスする

先ほどの例ではただ単に文字列変数[数値]としたが、スライスはもう少し複雑です。抽象的に表現すると、
文字列変数[スタート:エンド:ステップ]という書式をとります。この書式は一部省略可能です。

  • 文字列変数[ : ]→先頭から末尾まで全ての文字列を取得します。
  • 文字列変数[ スタート: ]→スタートで指定した数値から末尾までを取得します。
  • 文字列変数[ :エンド ]→先頭から「エンド-1」文字目までをスライスします。
  • 文字列変数[ スタート:エンド ]→指定した開始位置から「指定した終了位置-1」文字目までをスライスします。
  • 文字列変数[ スタート:エンド:ステップ ]→指定した開始位置から「指定した終了位置ー1」文字目までをステップ文字ごとにスライスします。

こういうものは、実際にコーディングしながら理解するのが一番です。自分で書いておいてなんですが、上記のような抽象的な解説を読んでもいまいちピンとこないと思います。幸いPython3にはIDLEという強い味方がいるので、短いコードをすぐに気軽に試すことができます。

尚、文字列の1文字目は数値では「0」である点に注意して下さい。

それでは先ずIDLEを開いて、テスト用の文字列変数を作成しましょう。ちょっと長めで順番がわかりやすい文字列がいいので以下のようにします。

test = “abcdefghijklmn”

全部で13文字ですね。[a-m]です。

ではコイツをいろいろとスライスしてみましょう。練習と実験がプログラミング上達の秘訣ですからね。

まず一番簡単なところから。

test[:]

こうすると全部の文字列を取得できます。

次は、開始位置から末尾までを取得してみます。

test[2:]

先頭の文字は0なので、2は「c」を表します。なので、結果は、cdefghijklmnとなります。

次は、先頭から「エンド-1文字目」までをスライスしてみます。

test[:2]

この場合、エンドは2すなわちcなので、そこから1引くとbになりますね。従って結果は、abとなります。

実際にIDLEに入力して一緒に試しながらやって下さいね。少し慣れてきましたか?慣れれば全くややこしくなく、簡単ですよね?

次は、開始位置と終了位置を指定してみます。

test[2:5]

開始位置は0,1,2文字目なのでcですね。終了位置は5文字目なのでeになります。

従って結果は、cdeですね。

ここで忘れてはならないのは、0から数え始めているという点です。「e」は0から数えて、4個目ですね。test[2:5]と指定しているので、「エンド-1文字目」の「e」が来るわけです。0から数えて5個目は、「f」ですからね。

test[0:5:2]

これは慣れるまで少しわかりにくいかもしれません。ステップというのは抜かすということです。上記の例では、

abcdeを1文字ずつ抜かして、aceという結果が得られます。

また、

test[-1::-1]

と入力すると文字の順序が逆になります。

結果は、「nmlkjihgfedcba」となります。

文字列の長さを取得する

len()関数を使えば文字列の長さを取得することができます。IDLEに次のように打ち込んでみて下さい。

きっと「5」という結果が返ってくるはずです。len()関数は一見地味ですがプログラミングをしていく上でとても役立つ関数です。

文字列の分割

split()関数は文字列専用のもので、文字列を指定された、セパレータと呼ばれる区切りで分割し、リストを作成してくれます。リストについてはまだ習っていないので、今は深く考える必要はありません。後々、リストの説明が出てきたタイミングで納得できるはずです。

ただ便宜上、簡単にリストについて説明すると(,)カンマで区切られてて[]で囲まれた値の連続のことです。こうして抽象的に説明するとわかりにくいかもしれませんが実物を見れば一発で分かります。例えば以下のようなものがリストです。

[‘apple’, ‘orange’, ‘banana’]

さて実際にsplit()関数をIDLEに入力して早速試してみましょう。けっこう面白い関数ですよ。

尚split()関数の書式は、

文字列変数.split(セパレータ)

です。

[‘ようこそ’, ‘夢の国’, ‘Pytyon3ワールドへ’, ‘一緒にPython3を楽しみましょう。’]

という結果が得られるはずです。今回は全角の「!」をセパレーター(区切り文字)として使ってみました。

例えば「。」をセパレータとして使うと、長い文章を、文ごとに区切ったリストを作るなんてこともできますね。

尚、split()関数に何もセパレータを指定しないと「改行、スペース、タブ」をセパレータにします。改行はいいとして、スペースをセパレータにしてリストを作るには英文向きですね。日本語はスペースで単語を区切りませんからね。

 

Python3にはその他にも文字列を操作したり、文字列の中に特定の単語が何個入っているか調べるなど様々な文字列操作関数が用意されています。

それらを全部紹介していると、きっと読んでいる読者の方もだんだん飽きてきてしまうと思うので、もっと文字列操作について知りたい方はPython公式ドキュメントの「http://docs.python.jp/3/library/stdtypes.html#string-methods」を参照して欲しいと思います。

プログラミングがはじめての方の場合は、「一つ一つの関数を覚えなきゃ!」と思ってしまうかもしれませんが、実際には各関数をいちいち記憶する必要はありません。プログラムを書いていて必要になったときにGoogle先生に聞けばいいのです。

また上記で紹介したPython公式ドキュメントもプログラムを組んでる最中に「何か便利な道具はないかな?」と思ったときに役立ちます。

文字列の解説の締めくくりに、割と重要な文字の置き換え(置換)について解説して文字列は終わりにしようと思います。

今は分からなくてもいいですが、Python3の「置換」をするための関数「replace()」は正規表現にも対応しています。正規表現とは簡単に説明すれば、文字を検索したり置き換えるのに便利なツールです。

正規表現に興味がある方は当サイトのゼロからの正規表現入門講座を参考にしてみて下さい。正規表現は文字列操作の超強力なツールです。覚えるには少し根気がいりますが……。

replace()関数による文字列操作

書式

文字列変数.replace(置き換えたい文字列, 置換後の文字列)

それでは例によって実際にIDLEにサンプルコードを入力して試してみましょう!

結果は「’Python3は最高にエキサイティングだね!’」となります。

これで文字列操作の解説を終わります。お疲れ様でした!

おわりに

分かりやすく面白いPython3への入門記事を全身全霊を込めて書き続けますので、どうか当サイトを今後とも宜しくお願い申し上げます!!

【広告】当サイトと併用することで学習効果倍増間違いなし!→Pythonスタートブック

 

あわせて読みたい

Amazonスポンサードリンク