Python:文字列ルール — ' " ''' とエスケープ、f文字列の基本
音声
目次
Python文字列の基本と今回できること
今回できるようになることは、シングル引用、ダブル引用、トリプル引用、エスケープ、f文字列の基本を理解して、簡単な実例を自分で動かせるようになることです。
最小コードは次のとおりです。
# strings_example.py
name = "太郎"
age = 30
s1 = 'Hello'
s2 = "He said \"Hi\"" # ダブルの中でダブルを使うときのエスケープ
s3 = 'It\'s fine' # シングル内でシングルを使うときのエスケープ
s4 = """複数行
の文字列です。"""
g = f"{name}は{age}歳です" # f文字列で変数埋め込み
print(s1, s2)
print(s3)
print(s4)
print(g)
何が起きるかというと、このスクリプトは各種引用とエスケープ、f文字列の出力を順に表示できます。
実行方法は次のとおりです。
- ファイル名を strings_example.py として保存します。
- ターミナルで python strings_example.py を実行します。
- または VSCode でファイルを開き、上部の再生ボタンで実行します。
出力例は次のとおりです。
Hello He said "Hi"
It's fine
複数行
の文字列です。
太郎は30歳です
要チェックの確認方法は次のとおりです。
- print で画面出力を確認します。
- type(g) を追加して型が str であることを確認します。
- 部分的に print(name) と print(age) を入れて途中結果を確認します。
引用符とエスケープのルール
シングル(')とダブル(")は基本的に同じ機能で、内側に同じ種類の引用を含める場合は、エスケープ(バックスラッシュ)を使います。エスケープは、文字を特別扱いから通常の文字に戻す操作です。
トリプル引用(''' または """)は、改行を含む長い文字列に使えます。
生文字列(r"...")は、バックスラッシュをリテラルとして扱えますが、末尾にバックスラッシュを置けない制約があります。
よくあるミスとして、エスケープを忘れると SyntaxError になる場合があります。原因は引用が閉じられていないことなので、使う引用を変えるか、適切に \' や \" を入れると直せます。
f文字列と使い分けの基準
f文字列は式を中に書けるため、直感的に変数を埋め込めます。
使い分けのポイントは次のとおりです。
- 短く読みやすい埋め込みが欲しいときはf文字列が向いています。
- 複雑なフォーマットが必要なときは
format()や%演算子も候補になります。 - SQLや外部コマンドに渡す文字列は、f文字列で直接埋め込まずプレースホルダを使うほうが安全に設計できます。
たとえば、小数点以下2桁に整形するには次のように書けます。
f"{value:.2f}"
可読性と安全性のバランスで選ぶと、運用しやすくなります。
あらためて基準を整理すると、短いメッセージやログはf文字列が読みやすいです。一方で、ユーザー入力を組み合わせる場面ではフォーマット関数とエスケープを検討すると安心です。また、複数行テンプレートはトリプル引用で作り、format()を使うと見通しが良くなります。
デバッグの見方と1段ステップアップ
デバッグの見方(print / logging / 変数の確認)は基本です。まずは print() で値と型を確認すると状況を切り分けやすくなります。より本格的には logging モジュールでログレベルを分けると便利です。
例です。
import logging
logging.basicConfig(level=logging.DEBUG, format="%(levelname)s:%(message)s")
x = "値"
logging.debug("x=%s type=%s", x, type(x))
この例ではデバッグログが表示され、値と型が出力されます。1段ステップアップとして関数化と例外処理を加えると、再利用性と堅牢性が上がります。短い関数にまとめ、try/except で予期しない型や値の問題を補足すると要チェック箇所が明確になります。
注意(ここだけ)
文字列操作でファイル上書きや削除を行うコードを扱う場合は、ファイル名やパスを検証し、バックアップを作成し、上書き前の確認処理を必ず実装してください。以上はこのセクションでの唯一の要チェックポイントです。
要約
シングルクォートとダブルクォートは同等であり、同じ種類の引用符の内側はエスケープで扱えることがわかります。
トリプルクォートは複数行文字列に便利であり、f文字列は変数の埋め込みを簡単にできることがわかります。
実行は
python file.pyまたは VSCode の実行ボタンで行えて、printとtypeで確認できることがわかります。デバッグはまず
printから始めて、発展的にはloggingと関数化・例外処理でステップアップできることがわかります。ファイル操作など破壊的な処理は、事前検証とバックアップを実装して扱う必要があることがわかります。