文字列とは、連続する文字で作られたデータです。
Pythonでは文字をどのように扱うのか、ここから順番にみていきましょう。
補足ちなみに、他のプログラミング言語では、「文字列」ではなく「文字」(char)というデータ型もあります。
pythonにchar型はありませんが、「(文字列ではなく)文字」というデータの種類もあるということを頭の片隅に置いておくと良いかもしれません。
文字列の作り方
さっそく、文字列の作り方について見ていきましょう。
文字列を作るためには、データを引用符でかこみます。
引用符とは、(’シングルクオテーション’)または(”ダブルクオテーション”)のことです。
つまり、文字列を引用符でかこむことで、Pythonが「これは文字列だ」と認識してくれます。
コード1 name = 'tanaka'
2 print(name)
アウトプットtanaka
コードの解説1 変数nameに'kobayashi'という文字列を代入しています。
2 print関数で、変数nameを出力しています。
無事に文字列を定義することができました。
次に、Pythonで文字列をつかう時に知っておいた方が良いルールや考え方を見ていきましょう。
’と”の使い分けに明確なルールはない
引用符には’と”の2種類があるとお伝えしましたが、実際のPythonコードを見ていると、シングルクオテーションで書かれている場合が多いように感じます。
シングルクオテーションの方が多い理由は色々とあるようですが、USキーボードの場合、シングルクオテーションとダブルクオテーションは同じキーに配置されているため、’の方がタイプしやすい(シフトキーを押す必要がない)という理由を頭に入れておくと良いかもしれません。
ちなみに、引用符を付けないとどうなるでしょうか?実際にコードを書いて確かめてみましょう。
コード1 name = tanaka
2 print(name)
アウトプットNameError: name 'tanaka' is not defined
tanakaという名前は定義されていません。というエラーが出てしまいました。
これは、Pythonがtanakaをデータと認識していないとがエラーの理由です。
引用符で囲んでいないので、Pythonはtanakaを変数とみなしてしまったのです。
では、このように書いた場合はどうでしょうか。
コード1 tanaka = 'tanaka'
2 name = tanaka
3 print(name)
アウトプットtanaka
今回は、しっかりとtanakaという文字列が出力されました。
なぜなら、tanakaという変数にtanakaというデータを代入したからです。
文字列をデータとして扱うためには引用符をつける必要があるということを覚えましょう。
シングルクオテーションを文字列の中で使いたい場合
では、文字列の中でシングルクオテーションを使いたい場合はどうすれば良いでしょうか?
例えば、it's time to wake upという文字列を出力したい場合です。
実際にコードを書いてみましょう。
コード1 alarm = 'it's time to wake up!'
2 print(alarm)
アウトプットSyntaxError: invalid syntax
エラーが出てしまいました。invalid syntaxというのは、「間違った文法」というエラーです。
なぜ文法が間違っているのかというと、it's time to wake up!という文章には途中に引用符が入っているので、Pythonは'it'という文字列であると判断してしまうのです。
つまり、it' のあとは文字列ではないため、Pythonは「s time to wake up」が何なのか分からないので、エラーになってしまうのです。
では、文字列中でシングルクオテーションを使いたい場合はどうすれば良いのでしょうか?
答えは2つのやり方があります。
文字列をダブルクオテーションで囲む
シングルクオテーションの中のダブルクオテーションや、ダブルクオテーションの中のシングルクオテーションは、Python上で問題なく使えます。
つまり、上記の文章の場合、このように書いてあげれば良いのです。
コード1 alart = "it's time to wake up!"
2 print(alart)
アウトプットit's time to wake up
エスケープシーケンスを使う
もう一つのやり方は、エスケープシーケンスを使う方法です。
詳細はエスケープシーケンスという記事で詳しく説明していますので、参考にしてみて下さい。
先程の文書は、エスケープシーケンスを使ってこのように書くことができます。
コード1 alart = 'it\'s time to wake up!'
2 print(alart)
アウトプットit's time to wake up!
\(または¥記号)を使うことによって、シングルクオテーションをただの記号として使うことができました。
3連続の引用符を使って複数行の文章を書く
複数行の文章を書きたい時は、3連続の引用符を使うことができます。
具体例でみていきましょう。
コード1 speech ='''I have a dream that my four little children will one day live in a nation
2 where they will not be judged by the color of their skin but by the content of their character.
3 I have a dream today.'''
4 print(speech)
この文章はマーティンルーサーキング牧師が1963年に演説した内容です。
このコードを実行すると、このようなアウトプットを得ることができます。
アウトプットI have a dream that my four little children will one day live in a nation
where they will not be judged by the color of their skin but by the content of their character.
I have a dream today.
ちなみに、普通の引用符としてこのコードを実行するとどうなるでしょうか。
コード1 speech ='I have a dream that my four little children will one day live in a nation
2 where they will not be judged by the color of their skin but by the content of their character.
3 I have a dream today.'
4 print(speech)
アウトプットSyntaxError: EOL while scanning string literal
エラーが出てしまいました。
これは、Pyhontが文字列をscan(どこまでが文字列かを確認)している間にEOL(行の終端)が来てしまったと言ってます。
Pythonでは改行も意味を持っていますので、文章が改行されているにも関わらず文字列が引用符で閉じられていない場合、文法上のエラーとなってしまうのです。
Pythonで文字列型を扱う場合は、このあたりのルールを押さえておくと良いでしょう。
算術演算子も使える
文字列には、算術演算子も使うことができます。
具体的な使い方については、算術演算子という記事にまとめていますので、参考にして下さい。
文字列型で知っておくと便利な関数
ここからは、文字列型で知っておくと便利な関数について紹介します。
title()関数
title()関数は、文字列のそれぞれの単語の先頭を大文字にすることができます。
具体例で見ていきましょう。
コード1 message = "I have a dream"
2 capital = message.title()
2 print(message.title())
アウトプットI Have A Dream
コードの解説(1) 1行目でmessageという変数にI have a dreamというデータ(文字列)を代入しています。
(2) 2行目でmessageという変数、すなわち、I have a dreamというデータを引数として、title()という関数を実行し、それをcapitalという変数に代入しています。
(3) 3行目でcapitalを出力するよう命令しています。その結果、I Have A Dreamという文字列が出力されました。
title関数は、元の変数を変えるわけではない
title関数を使った後に、message自体をprintするとどうなるでしょうか。
コード1 message = "I have a dream"
2 message.title()
2 print(message)
アウトプットI have a dream
messageをprint()関数で出力したのですが、結果はI have a dreamと大文字になっていません。
つまり、title()関数を実行したとしても、元の変数を変えるのではないということに注意して下さい。
upper()関数
upper()関数は、文字列を全て大文字にします。
コード1 message = "I have a dream"
2 capital_message = message.upper()
3 print(capital_message)
アウトプットI HAVE A DREAM
文字列のまとめ
(1) 引用符(’か”)を使うことで文字列のデータを作ることができる。
(2) 引用符は入れ子(’ ” ’のような形)になっても問題ない。
文字列を学んだ後は
文字列について学んだ後は、エスケープシーケンスについてまとめて整理すると良いかもしれません。
また、データの種類について知識を増やしたい場合はリストについて学んでいきましょう。