こんにちは、うしまるです。
今回はPythonを使った文字列操作について紹介していきます。
文字列操作とは?
Pythonでは数字の他に文字列を取り扱うことが出来ます。“あ”とか“い”とか“福岡”とか“abc”とかですね。文字列の表示方法については下の記事で環境構築から文字列の表示まで解説していますので御覧ください。
文字列操作とは、文字データを使いたいように加工していくことを言います。
例えば、新幹線の電光掲示板とかで「次は博多駅です」のように「次は○○駅です」というパターンを博多から東京まで作るとします。一番大変だけど確実なのは「次は博多駅です」→「次は小倉駅です」→「次は…」→「次は東京駅です」と駅数分作ってしまえば良いわけですが大変ですよね。
そこで「次は」と「駅名」と「駅です」の3つ構成にしてしまえば駅名だけ登録していけば良くなります。
このようにプログラミングでも文字列をくっつけたり分割したりすることが出来ますので今回はPythonでそのやり方について紹介していきたいと思います。
文字列操作をしてみよう!
まず、大前提としてPythonで文字列を扱うときは「”」(ダブルクォーテーション)や「’」(シングルクォーテーション)で囲って表現することが出来ます。
例えば「福岡」と表示したいときは“福岡”とか‘福岡’と表現することが出来てメッセージ用の変数を使うことでプログラム上で動作させることが出来ます。
具体的な使い方は以降の章で確認ください。
文字列をくっつけてみよう
まず最初に文字をくっつけてみましょう。「文字列の結合」なんて言ったりもします。
a = “博多”
b = “駅”
c = a + bとしたときの結果について確認していきます。
![](https://usimaru.net/wp-content/uploads/2020/05/vs-pymoji-00.png)
ターミナルの部分に『博多駅』と表示されることが確認できたと思います。
文字と文字の間に値を表示させてみよう
文字列を表示させる使い方として、例えば計算結果に一言添えたいといったような要望があるかと思います。「1+2=3」として出すのも良いですが「この足し算の結果は3です」といった表示もしたいですよね。
そんなときに使うパターンについて紹介します。前章の文字列の結合を使ったパターンをまずは見ていきましょう。
a = 1
b = 2
a + bの結果を変数cに表示するようにします。
今回は2パターン
①単独で表示する場合
②複数表示する場合
![](https://usimaru.net/wp-content/uploads/2020/05/vs-pymoji-01.png)
ターミナルの中で最初の段に「この足し算の結果は3です」と表示されました。
“%d”の部分に変数cの値が表示されるようになったと思います。
複数表示したい場合は次の段で「この足し算(1+2)の結果は3です」といった表示の部分に着目してみてください。”%d”が3つあり、それぞれが「(a,b,c)」と左から順番に置き換わっていくようなイメージとなります。
ちなみに、「%d」は何にでも使えるわけではなくて、整数を表示したいときに使います。
この「%」がつくものをフォーマット指定子といいます。
他の方法についても見ていきましょう。
![](https://usimaru.net/wp-content/uploads/2020/05/vs-pymoji-02.png)
先程と同じ条件で実行してみました。実行結果は同じとなりますが、{0}や{1}の部分に結果が入るようになりました。この{}の中身の順番がformat(0,1,・・・)と順に紐付いて表示させることが出来ます。このパターンの場合はフォーマット指定子をあまり気にしなくていいのでこちらのほうが便利です。ただしここでそれぞれの変数がどういった情報を含んでいるのかを意識することが大切になってきますので理解した上での使用をおすすめします。
さらに”この足し算({}+{})の結果は{}です”みたいな形で数字を入れないパターンもあります。このときも上のときと同様に最初に出てきた{}から順番に表示されるのでformat(a,b,c)とした場合はa→b→cの順番に表示させることが出来ます。
特定の位置の文字列を取り出してみよう
次は文字列の中から一部分を取り出してみましょう。例えば商品名と価格が表示されるような文章「32インチ4Kモニタ70000円」みたいな表示があったときに「32インチ4Kモニタ」と「7000円」に分けて取得したいとかそんなときに使うやり方です。
変数mojiの中に「今日の天気は晴れ」を設定します。
変数の後ろに[:]とつけることで文字列の任意の位置から文字を抽出することが出来ます。
ちなみに文字列の数え方は一文字目が0となります。”今”→0番目、”天”→3番目といった具合です。
![](https://usimaru.net/wp-content/uploads/2020/05/vs-pymoji-03.png)
print()の中に変数mojiをそのまま表記すると文字列すべてが表示されます。同じようにmoji[:]と記載した場合もすべて表示されます。
ここまではこれまでと同じです。ではいよいよ特定の位置の文字列を取り出してみましょう。
まず見方からですが、[(取り出し位置の始まり):(取り出し位置の終わり)]といった形となっています。
また[:]のように空白にしておくと一番最初とか一番最後といった形になります。ですので[3:]とかだと3番めから最後までの文字列を取得することが出来ます。今回の例だと「天気は晴れ」といった感じです。
[:5]は逆に一番最初から5番めまでの文字列を取得することが出来ます。今回の例だと「今日の天気」といった感じです。
そして[3:6]のように両方指定すると文字列の3番めから6番めを表示することができます。今回の例だと「天気は」といった感じになります。
まとめ
今回は文字列操作に関して紹介しました。他にも文字列の置換や検索、比較などが出来ますので追々記事にしたいと思います。
それではまた次の記事でお会いしましょう。でわでわ~ノシ
%d, %i …符号付き10進数 (-10とか256とか)
%s…文字列(“あ”とか”福岡”とか)
※他にも色々ありますので気になる方は「フォーマット指定子」で調べてみてください。