このページでは、Pythonからプログラミングを学び始めた方のために、文字列の扱いについて、初心者が、まず押さえておくべき知識と技術をまとめています。
Python(特にPython3以降)の文字列の操作は優れており、他のプログラミング言語よりも、簡単に、複雑な処理でも実行できるようになっています。そのための基礎を、ここでしっかりと身につけましょう。
なお、ここでの内容は Python 2 でも Python 3 でも共通ですので、どちらを学習している方でも、安心してご覧頂ければと思います。
1. Python の文字列とは
「文字列」とは、シンプルに、文字が特定の順番に連なっているもののことです。別名、「ストリング(string)」や「テキスト(text)」ともいいます。
例えば、”study”という単語は、アルファベットの ‘s’, ‘t’, ‘u’, ‘d’, ‘y’ の 5 つの文字が「特定の順番に連なって」いますので文字列です。同じ 5 つのアルファベットを使っても、”study” と “dusty” は、文字の並びが違うので別の文字列です。
このように、「特定の順番に連なっているもの」を「シーケンス」といいます。シーケンスは、プログラミングでよく出てくる言葉なので、この機会に覚えておくと良いでしょう。
文字列は、単語に限りません。例えば、 “this is a pen.” のような文も、4 つの単語が、特定の順番に連なってできている文字列(シーケンス)です。
のっけから聞きなれない言葉のオンパレードで、不安に感じるかもしれません。ご安心ください。これらは、現段階で、はっきりと理解できていなくても全く問題ありません。
実際問題、このようなことを明確に理解していなくても、素晴らしいWEBサービスを開発している人は、世界中にいくらでもいます。ただし、細かい知識がなくても素晴らしいプログラムを作る人はいても、文字列の操作方法に精通していない人はいません。
つまり、文字列の扱いに精通することは、プログラミングを学んで、素晴らしいWEBサービスを開発できるようになるための最初の一歩だということです。一度経験してしまえば、「最初に面食らっていたのが何だったのか」と思うぐらい、簡単にできるようになります。
・Pythonに限らず文字列操作と数値演算は、プログラミングの最初の一歩。
・Pythonの文字列はシーケンス(文字が特定の順番に連鎖しているもの)である。
2. Python の文字列操作の基本
それでは、文字列の基本をお伝えしていきます。
- 文字列の作り方
- 文字列を作る時によくあるエラー
- 文字列に変数を与える方法
の 3 つあります。まずは、この 3 つだけに集中して、しっかり理解して、実践できるようになりましょう。
2.1. 文字列の作り方
Pythonで文字列を作る時は、シングルクオート( ‘ )か、ダブルクオート( ” )を使います。
# 単語
'文字列'
# 文
'文も文字列です'
# ダブルクオートも使えます
"ダブルクオートで作った文字列です"
2.2. 文字列を作る時によくあるエラー
ただし以下のようにクオートがバッティングするとエラーが出ます。
# クオートの使い方に関する注意点
'I'm good at prgramming.'
このエラーの原因は、文字列を囲むシングルクオート( ‘ )と、”I’m” の中のアポストロフィ( ‘ )が重複しているところにあります。
こういうときは、以下のようにダブルクオートを使います。
"I'm good at programming."
2.3. 文字列に変数を与えるには「=」を使う
文字列には、変数を与えることが可能です。
「変数」とは、あるデータを、必要な時にいつでも簡単に利用できるようにするために、そのデータに名前を与えたものです。
以下をご覧ください。
#以下の文字列(データ)に"text"という名前(変数)を与えます。
text = "これは文字列です"
「text = “これは文字列です。”」と書いていますね。
このように、先に名前(変数)を書いて、それと文字列(データ)を、「=」で繋ぎます。これを、「”text”という変数に文字列を代入する。」といいます。また「=」のような不等号式の記号を「演算子」といいます。
詳しくは「Pythonの演算子一覧と解説」をご覧ください。
#変数を実行すると文字列(データ)が表示されます。
text
簡単ですね。
このように、あるデータに変数を与えると、様々な便利な処理を、簡単に行えるようになります。詳しくは、「Pythonの変数の基礎知識」に目を通してみてください。
なお、データとメソッドを持っている変数のことを「オブジェクト」といいます。メソッドについては、これから自然と詳しくなってくるので、現時点では、分からなくても、全く焦る必要はありません。
文字列には、使えるメソッドがたくさんあります。そのため、文字列を代入した変数は「文字列オブジェクト」です。詳しくは、「Pythonのオブジェクトとは」を読んでみましょう。
余談になりますが、最初は、何もはっきりとは理解できなくても全く問題ありません。
プログラミングの学習に重要なのは才能ではなく根気です。実は、もの凄く簡単なことなのですが、耳慣れない言葉が多いから、最初だけ面食らってしまうだけなのです。投げ出さずに、コツコツと根気強く、向き合っていれば、必ずストンと理解できる時が来ます。
どのような名プログラマーだって、最初は、分からなくても根気強く向き合った人たちであるということを理解しておきましょう。
・文字列を作る時はクオート( ” か “” )を使う。
・クオートが重複するとエラーになる。
・文字列に変数を与えるには「=」を使う。
・変数とデータを持ち、メソッドが使えるものを「オブジェクト」という。
3. Pythonの文字列はイミュータブル(変更不可能)
次に、Pythonの文字列の重要な特徴である「イミュータビリティ」についてお話します。
これも最初はハッキリと理解できなくても良いので、とにかく「文字列はイミュータブル」ということだけは覚えておきましょう。学習を進めて、読み返した時には、すんなりと意味が分かるようになります。
3.1. イミュータブル(変更不可能)とは
文字列には、「イミュータビリティ(immutability)」といって、「一度文字列を作ったら、その後に、その文字列の一部を変更するようなことはできない」という特徴があります。
このような特徴があるので、文字列は、「イミュータブルなオブジェクト」といいます。繰り返しとなりますが、「オブジェクト」とは、データとメソッドを持っている変数のことです。そのため、文字列データをもつ変数は、「文字列オブジェクト」です。
以下をご覧下さい。
#文字列を変数"s"に代入します。
s = "Hello World"
#変数"s"を実行します。
s
“s” という名前の文字列オブジェクトを作りました。今、”s” には、”Hello World.” という文字列が入っています。
それでは、ここで、”H” を “x” に変更しようとしてみましょう。
# Hello Wolrd の最初の文字'H'を'X'に置き換えようとしてみます
s[0] = 'x'
「s[0] 」と書いていますね。
これは、「文字列の抽出(スライシング)」といって、変数 “s” に代入された文字列の、0 番目(一番最初)の要素を抽出することを指示しています。”Hello World.” という文字列の一番最初の要素は “H”ですね。式は、「s[0] = ‘x’」となっていますので、つまり、”H” を “x” に置き換えるという意味になっています。
これについては、「Pythonの文字列の抽出」の前半の「インデクシングとスライシング」の部分で、さらに詳しく解説しています。
それよりも、ここでしっかりと覚えて頂きたいのは、既に作った文字列の一部を、後で変更しようとしても、できない(エラーになる)ということです。これが「イミュータブル」ということの意味です。
3.2. 同じ変数に新しい文字列を上書きすることは可能
ここまでお伝えした通り、文字列オブジェクトはイミュータブルなので、既に作った文字列の一部を変更することはできません。
ただし、以下のように、同じ変数 “s” に新しい別の文字列を代入して、上書きすることはできます。これは「文字列の一部変更」には当てはまらないからです。
#ただし変数"s"に新しい文字列を代入することはできます。
s = 'This is a new string.'
#変数"s"を実行します。
s
・Pythonの文字列オブジェクトはイミュータブルなオブジェクトである。
・イミュータブルとは、 一度作った文字列の一部を変更することはできないこと。
・ただし、新しい文字列を上書きすることは可能である。
4. まとめ
Python の文字列の基本について解説しました。最初にもお伝えした通り、文字列操作は、プログラミングを学ぶ上で、数値演算と並んで、最初の一歩です。
まとめると知識としては、以下の点を理解しておくとよいでしょう。
- Pythonの文字列は、文字が特定の順番に連鎖している「シーケンス」である。
- Pythonの文字列はイミュータブルである。
そして、技術としては、以下の 2 つを実践して、しっかりと使いこなせるようになっておきましょう。
- 文字列の作り方
- 文字列を変数へ代入する方法(文字列オブジェクトの作り方)
ぜひ、参考にしてくださいね。
コメント