Pythonの生の文字列の使い方
はじめに
Pythonにおいて、文字列リテラルの前にrまたはRを付けることで、生の文字列を作成することができます。Pythonの生の文字列は、バックスラッシュ文字(\)をリテラル文字として扱います。生の文字列は、正規表現やWindowsディレクトリパスなどのバックスラッシュを含んだ文字列を扱う必要があり、エスケープ文字として扱われたくない場合に便利です。この記事では、Pythonの生の文字列の基本的な機能について説明し、特殊文字を含む文字列を作成するために生の文字列を使用するいくつかの一般的な例を提供します。
この記事の例では、Pythonの対話型コンソールをコマンドラインで使用して、さまざまな生の文字列のシナリオをデモンストレーションしています。
生の文字列を使用して文字列に改行文字を含める方法を説明してください。
この例では、値を持つ文字列を使用しています:「こんにちは\nこんにちは」。通常の文字列にこの値を割り当てようとすると、改行文字(\n)により新しい行が作成されます。
- s = ‘Hi\nHello’
文字列を出力してください。
- print(s)
出力は次の通りです:
Hi
Hello
出力結果は改行文字によって新しい行が表示されることを示しています。
改行文字を文字列に含めるためには、文字列変数の前に「r」または「R」を付けて、生の文字列を作成します。
- raw_s = r‘Hi\nHello’
文字列を表示してください。
- print(raw_s)
出力は次の通りです:
Hi\nHello
出力には改行文字が含まれます。
生の文字列を使用して文字列にバックスラッシュ文字を含める
ホスト名のパスなど、ダブルバックスラッシュ(\\)の文字を通常の文字列に含めようとすると、最初のバックスラッシュ(\)は表示されません。なぜなら、コンパイラはバックスラッシュをエスケープ指示子として解釈するためです。
例えば、パスを含む文字列を作成してください。
- s = ‘\\examplehost\digitalocean\content\’
文字列を出力してください。
- print(s)
出力は次のようになります。
\examplehost\digitalocean\content\
出力結果から、最初のバックスラッシュ文字が文字列に含まれていないことがわかります。
文字列にバックスラッシュを含めるためには、文字列変数の前に r または R を付けて、生の文字列を作成してください。
- s = r‘\\examplehost\digitalocean\content\’
文字列を出力する。
- print(s)
出力は次の通りです。
\\examplehost\digitalocean\content\
出力にはバックスラッシュ文字が両方含まれています。
原始的な文字列での引用符とバックスラッシュ文字のトラブルシューティング
生の文字列では、クォーテーションは引用符として扱われるが、単一のバックスラッシュ文字でエスケープすることもできる。ただし、バックスラッシュ文字は結果の生の文字列に残る。
また、バックスラッシュ文字の奇数個で終わる生の文字列は使用できません。この特徴により、単一のバックスラッシュ文字を含む生の文字列を作成することはできませんので、r”/”は無効な文字列です。
不正な生の文字列の例
この例では、終わりの引用符は出力から抜けてしまっています。バックスラッシュ文字によってエスケープされているため、終わりのない文字列リテラルのエラーが発生しています。
r'\'
この例では、最初の2つのバックスラッシュは互いをエスケープし、3番目のバックスラッシュは終わりの引用符をエスケープしようとしますが、結果として終わりのない文字列リテラルのエラーが生じます。
r'ab\\\'
有効な生の文字列の例
以下は、引用符とバックスラッシュ文字を含む有効な生の文字列の例です。
“クォートをエスケープする生の文字列を作成します。”
- s = r“\”\”“
文字列をプリントしてください。
- print(s)
出力は次の通りです:
\"\"
出力結果は、バックスラッシュ文字が引用符をエスケープし、文字列が終了しないようにするが、バックスラッシュ文字は結果の文字列に残ることを示しています。
バックスラッシュ文字が偶数個含まれる生の文字列を作成します。
- s = R‘ab\\’
文字列を表示する。
- print(s)
出力は次のようになります:
– 出力結果は
– 出力は
– 出力結果は以下の通りです
– 出力は以下のようになります
ab\\
出力結果には、バックスラッシュ文字の偶数個が含まれていることが示されています。
結論
この記事では、Pythonの生の文字列の基礎を学びました。Pythonの文字列についての学びを続けてください。