【Python】文字列型について

python_logo

こんにちは!

今日はPythonでよく使う型の一つ、文字列型についてまとめました。

文字列の操作まで含めるとかなりボリュームがあるので、分けますねー

それではさっそく、やっていきます。

文字列とは?

Pythonで文字を扱う時は必ずこの型に当てはまります。
文字を扱うのであれば十中八九この型になります。

Pythonでの文字列の特徴はシーケンスの一種であり、不変オブジェクトです。

シーケンスとしての文字列

文字列はシーケンスですので、リストやタプルのような操作が可能です。

前から数えて何番目の文字を抽出することができるのです。
また、スライシングにも対応しています。

不変オブジェクトとしての文字列

不変オブジェクトということは文字列は値を変更できないということを指します。

でもそれだと不便ですよね?
文字列同士を足したい時はどうしているのでしょうか?

それは、文字列を足した結果を新しいオブジェクトとして作成しているのです。

これ、意外と重要なので覚えて置いてくださいね!

文字列リテラルの定義

文字列は‘(クォテーションマーク)もしくは“(ダブルクォテーションマーク)を使って作成することができます。

作成のパターンとして以下のパターンがあるのでコードを見てみましょう。

ダブルクォテーションを使うかシングルクォテーションを使うかは好みで大丈夫です。

3つ連続で使用すると複数行に書くことができます。

また、一行に書きたいんだけど長すぎて書けないってときは\を使いましょう。

エスケープシーケンス

文字列の中身で特殊な文字を使いたい時に使用します。

\を使って表現します。

定義の時の\とは意味が違いますので気をつけてください。

例えば、改行やタブなどの特殊なコードを文字列の中に埋め込む時に使います。

これは別記事でまとめたいと思います。

Tips・注意点

いちいちエスケープシーケンスを書くのが面倒な時

文字列の中でエスケープシーケンスが多くなってしまう場合は一々\を書くのがめんどうになります。

そんな時は文字列リテラルの前にrもしくはRをつけましょう


test  = r'\t\\n"'
test2 = R'\t\\n"'

これは正規表現reを使う場合には、必ずrをつけておいたほうがいいです。
正規表現がpythonのエスケープ文字とみなされてしまい、うまく動作しないことがありますので、それを回避できます。

文字列の中の”と’

どちらか一方で囲むため、もう一方はエスケープシーケンスが必要がありません。

逆に言えば、文字列を囲むために使ったクォテーションマークはrで囲んだとしても必ずエスケープしなくてはいけません。

気をつけてください

Python3からデフォルトの文字列が異なる

Python2.xではデフォルトの文字列はASCIIコードでした。これは非常に不便で、特に我々日本語圏ではUTF-8でないと困る場面が多いです。

Python3からはそんなことをいちいち気にしなくても良くなりました。

昔は文字列がutf-8であることを明記するためにuもしくはUで囲む必要が有りましたが、もはや過去の話です!

ちなみに、uで囲む仕様はPython3.0で消えましたが、Python3.3で復活しました。意外と必要な仕様だったようです。

\で改行したい時

一行にまとめて文字列を使いたい時は\を使います。
ただし、これは注意が必要です。

この使用方法で\を使う時は\の後ろに何も書いてはいけません。
コメントを書くこともスペースも許されません。

微妙に紛らわしいので注意してください。

ちなみに一行で書きたい場合は文字列を結合したほうがいいです。

この書き方はかなり可読性を下げると個人的に思いますので避けたほうが無難です。コメントもかけませんし。。

まとめ

大方文字列については以上になります。
今回は文字列リテラルについてまとめました。

さて、リテラルを作るだけではつまらないので次は文字列の操作になります。

以上になります。

みなさんのPythonライフがよりよくなるように祈っています。