CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
こんにちは、菱沼です。
今回も「きれいなPythonプログラミング(マイナビ出版)」という書籍を利用して学習します。
前回は、誤用の多い構文としてwith文の使い方、恒等演算子is/統合演算子==の違いやNoneとの関係について学びました。
今回は、次の節のPythonにおける文字列フォーマットにはいりますが、文字列フォーマットを学習する前に、Pythonにおける文字列の書き方とraw文字列について学びたいと思います。
文字列フォーマットを学習する前に、まずはPythonにおける文字列の書き方(文字列リテラル)を改めて確認したいと思います。
プログラミングにおけるリテラルとは、「ソースコードに直接書かれた値」のことなんだそうです。
Pythonの場合、文字列を書く際には、「”(ダブルクォーテーション)」や「’(シングルクォーテーション)」で囲うというルールになっていますが、このようにクォーテーションで囲んで直接書かれた文字列は、文字列リテラルと呼ばれます。
また、文字列内で特殊な指示を出す際には「¥(バックスラッシュ・Windowsなら円マーク)」が使われます(改行なら「¥n」、タブなら「¥t」)。これ自体はエスケープ文字と呼ばれるもので、文字列の中で特別な意味を持つ表記です。クォーテーションで囲まれたものと同様、バックスラッシュを含む文字列全体が文字列リテラルとして扱われます。
なので、例えば
text = ”こんにちは¥nさようなら”
と書かれている場合、「”こんにちは¥nさようなら”」の全体が文字列リテラルとなります。(実行結果は¥nの部分で改行されて表示されます。)
ところで文字列として、「I’m fine」と書きたい場合、「”I’m fine”」と書く方法以外にバックスラッシュを使って「’I¥’m fine’」と書くこともできます。このときのバックスラッシュは、2つ目の「’」 を文字列の終わりとして扱わず、文字として解釈させるために使用されています。
そのため、バックスラッシュそのものを文字として含めたい場合には注意が必要になります。
1つの ¥ は「次の文字を特別扱いする」という意味になるため、実際に ¥ を表示したい場合は ¥¥ のように2つ続けて書く必要があります。
例えば、Windowsのファイルパス「C:¥Users」を通常の文字列で書く場合は、「C:¥¥Users」のように記述してあげる必要がある、ということになります。
ところで、こういったケースを含め、「¥」や「”」、「’」が重なって読みにくいなと思うことがあります。目がしょぼしょぼするんですよね...。こういったとき、raw文字列を使用すると、バックスラッシュをエスケープ文字として解釈されなくなり、そのまま書くことができるようになります。
(※ただ、raw文字列であっても、末尾をバックスラッシュで終えることはできないなど、一部制約があるとのこと。)
ではここで引用です。
------------------------------------
P.99
raw文字列は文字列リテラルにrの接頭辞をつけたもので、バックスラッシュをエスケープ文字としては扱いません。文字列にバックスラッシュを含む場合はそのまま書くことができます。例えば、次のようなWindowsのファイルパスを表す文字列は、バックスラッシュをエスケープする必要がありますが、あまりパイソニックではありません。
>>> # パイソニックでないコードの例
>>> print(’The file is in C:¥¥Users¥¥Al¥¥Desktop¥¥Info¥¥Archive¥¥Spam’)
The file is in C:¥Users¥Al¥Desktop¥Info¥Archive¥Spam
raw文字列(接頭辞がrであることに注目)は同じ文字列を表しますが、より読みやすくなっています。
>>> # パイソニックなコードの例
>>> print(r’The file is in C:¥Users¥Al¥Desktop¥Info¥Archive¥Spam’)
The file is in C:¥Users¥Al¥Desktop¥Info¥Archive¥Spam
raw文字列は普通の文字列と同じデータ型で、複数のバックスラッシュを含む文字列を入力するときに便利です。raw文字列は正規表現やWindowsのファイルパスを入力する際によく使われます。
------------------------------------
raw文字列によってバックスラッシュを省略できるようになったので、ファイルパスがだいぶすっきりしましたね。これなら頭に入ってきやすそうです。
それではきりが良いので今回はこちらで終了です。
では次回は文字列フォーマットと、f-stringについて学びたいと思います。
今回もお付き合いいただきありがとうございました。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes