Pythonでは、文字列リテラルと文字列値は異なる概念です。
文字列リテラルとは
文字列リテラルは、プログラムのソースコードに直接書き込むテキストのことを指します。文字列リテラルは、Pythonに特定の内容の文字列を作成するよう指示します。例えば、'asdf'
や ''' 複数行の内容 '''
や 'この最後には改行があります\\n'
などがあります。
文字列リテラル(raw文字列リテラルを除く)では、エスケープシーケンスと呼ばれる特殊な文字列が、実際の文字列では異なる文字に置き換えられます。例えば、文字列リテラル中のエスケープシーケンス \\n
は、実際の文字列では改行文字に置き換えられます。エスケープシーケンスはバックスラッシュで始まります。
文字列値とは
文字列値は、テキスト値を表すPythonオブジェクトのことを指します。文字列値は、文字列リテラルから作成することもありますし、ファイルから読み取ることもありますし、他の多くのソースから生成することもあります。文字列中のバックスラッシュは特別な意味を持たず、文字列の可能なソースのほとんどではバックスラッシュは特別な意味を持ちません。
例えば、次のようなバックスラッシュを含むファイルがあるとします。
asdf\\n
このファイルを次のように読み込むと、
with open('that_file.txt') as f:
text = f.read()
ファイル中の \\n
は改行に置き換えられません。バックスラッシュは文字列リテラル中では特別ですが、ほとんどの他のコンテキストでは特別ではありません。
まとめ
Pythonの文字列リテラルと文字列値の理解は、Pythonプログラミングの基本的な部分です。これらの違いを理解することで、Pythonでの文字列操作がより明確になります。