Pythonの文字列はシーケンス型の一種で、文字列シーケンスと呼ばれています。ここでは基本的な内容の紹介にとどめます。より詳しい文字列操作の内容は文字列操作を参照してください。
文字列と初期化
Pythonの文字列はstr型という型で扱われます。以降、str型変数を単に文字列と記述することがあります。文字列を初期化する際は以下のようにダブルクォートかシングルクォートで文字列を囲みます。
text1 = 'シングルクォートで囲む' text2 = "ダブルクォートでもOK"
エスケープシーケンス
改行やタブなどの特殊文字を使用する場合は、エスケープシーケンスとして\マークを使用します。例えば、ダブルコーテーションでくくった文字列の内部で
「得意なプログラミング言語は"Python"です。」
という文字列を定義する場合について考えてみましょう。
text = "得意なプログラミング言語は"Python"です。" # SyntaxError: invalid syntax
当然ながら、上のプログラムを実行するとエラーとなり「SyntaxError: invalid syntax」が出力されます。ダブルコーテーションを含んだ文字列を定義する場合は以下のように記述します。
text = "得意なプログラミング言語は\"Python\"です。" print(text)
エスケープシーケンスについて理解できたところで、以下に代表的なものを示します。
エスケープシーケンス | 意味 |
---|---|
\t | タブ |
\\ | \ |
\' | シングルコーテーション |
\" | ダブルクコーテーション |
\n | 改行 |
raw文字列
Pythonの文字列定義のクォーテーションの前にrもしくはRを記述するとraw文字列と呼ばれるエスケープシーケンスで使用した\マークを無効化することができます。
raw文字列を使用すると、例えばWindows系のディレクトリパスを記述する際にパスセパレータとエスケープで記述が煩雑になるのをさけることができます。
path1 = "C:\\work\\pywork" print(path1) path2 = r"C:\work\pywork" print(path2)
上のコードでpath1とpath2は同じ内容ですが、raw文字列を使用したpath2のほうがスッキリかけることがわかるかと思います。
文字列の結合
文字列の結合
文字列同士を結合する場合は"+"を利用します。
text1 = '今日は' text2 = 'いい天気' text3 = text1 + text2 print(text3) # 今日はいい天気 が出力される
オブジェクトの文字列表現と文字列結合
Pythonのprint文はオブジェクトを引数で指定すると、そのオブジェクトの文字列表現を得ることができます。例えば、これまで学習してきた数値やリストの値を参照したい場合、以下のようにprint文で確認することができます。
num = 5 print(num) # 5 l = [1, 2, 3] print(l) # [1, 2, 3]
ここで気をつけなければならないことが、文字列として結合するとTypeErrorが発生する、という点です。よくやりがちなエラーが以下のサンプルです。
num = 5 text = 'text' print(num) # 5が出力される print(text + num) # TypeErrorが発生
こんな場合、組込みのstr関数を使うことにより、オブジェクトの文字列表現を取得することができ、文字列結合することができます。
num = 5 text = 'text' print(num) # 5が出力される print(text + str(num)) # text5
Pythonにこなれてきてもデバッグ文やログ出力で比較的よくやりがちなミスですので、対処方法について知っておいてください。