Python の文字列とエスケープの基本
プログラミングを始めたばかりだと、文字をそのまま書いたつもりなのに思った表示にならないことがあります。これは「文字列の中で特別な意味を持つ記号」があるからです。そういう記号や見えない文字(改行など)を扱うために「エスケープシーケンス」を使います。
エスケープシーケンスとは
- 意味: 文字列の中で「特別扱いされる記号」や「見えない制御文字」を、バックスラッシュ(\)を使って表現する方法です。
- 仕組み:
\の後に特定の文字を書くと、1文字ではなく「特殊な動き」になります。
print("Hello\nWorld") # \n は改行
# 出力
# Hello
# World
Pythonよく使うエスケープと実例
- 改行(\n): 次の行に移る
msg = "一行目\n二行目\n三行目"
print(msg)
Python出力は3行に分かれます。
- タブ(\t): 横にすこし空ける(表のように揃えるときに便利)
print("名前\t点数")
print("Tanaka\t95")
Python- ダブルクォーテーション(”): 文字列の中で ” を文字として表示したいとき
print("He said \"OK\".")
Python- シングルクォーテーション(’): 文字列の中で ‘ を文字として表示したいとき
print('It\'s fine.')
Python- バックスラッシュそのもの(\): Windows のパスなどで必要
print("C:\\Users\\YourName\\Documents")
Pythonクォーテーションの使い分けとコツ
- 同じ種類のクォートで囲むと、中で同じクォートはエスケープが必要
print("Tom\'s book") # "..." の中で ' を使うならエスケープ
Python- 違う種類で囲めばエスケープ不要になることも多い
print('Tom\'s book') # ' で囲むと中の ' は要エスケープ
print("Tom's book") # " で囲むなら ' はそのまま書ける
print('He said "OK".') # ' で囲めば " はそのままでOK
Python- おすすめの考え方: 文字列内でよく使う記号と逆のクォートで囲む。例えば文章に ‘ が多いならダブルクォートで囲む。
生文字列(raw string)でエスケープを無効化
- 目的: バックスラッシュをたくさん使うとき(正規表現、Windows のパスなど)、エスケープが邪魔になることがある。そのときは先頭に
rを付ける。 - 注意:
r"..."はほとんどのエスケープを無効化しますが、末尾のバックスラッシュは書けません(r"..."の閉じクォートと干渉するため)。
print(r"C:\Users\YourName\Documents") # \ がそのまま扱われる
# 末尾が \ の raw 文字列は NG: r"C:\path\" # これはエラーになる
Python長い文字列・複数行の書き方
- 複数行の文字列をそのまま書きたい: 三連クォート(””” または ”’)を使う
text = """一行目
二行目 三行目””” print(text)
- **コード上で行を折り返したい(つなげたい):** 文字列の途中で `\` を使うと次行に継続できます(読みやすさのために使う)
```python
s = "今日は映画を観に行って、\
そのあと友だちとご飯を食べました。"
print(s)
Python- 文字列結合の別解: 連続したリテラルは自動結合されます(間に演算子不要)
s = ("Pythonは楽しい。"
"学ぶほど面白い。")
print(s) # 1つの文字列として結合される
Pythonよくあるつまずきポイント
- 改行が反映されない: ターミナル出力とエディタの表示の差かも。
print()で確認する。 - Windows パスが崩れる:
\\を使うか、r"..."を使う。 - クォートが閉じないエラー: 文字列の中で同じクォートを使うときは
\"や\'を使う。
練習問題とミニ解説
練習1:名簿を見やすく整える
- 課題: 次のデータを表っぽく揃えて表示してみてください。
名前: Sato, 点数: 88
名前: Suzuki, 点数: 92
名前: Tanaka, 点数: 75
- ヒント:
\tを使って列をそろえる。 - 例解答:
print("名前\t点数")
print("Sato\t88")
print("Suzuki\t92")
print("Tanaka\t75")
Python練習2:引用を含む文章を正しく表示
- 課題: 次の文章を1回の
printで正しく表示してください。 He said “Python is fun”, and it’s true. - ヒント: 外側のクォートを工夫するか、エスケープを使う。
- 例解答:
print("He said \"Python is fun\", and it's true.")
# または
print('He said "Python is fun", and it\'s true.')
Python練習3:Windows のフォルダパスを正しく表示
- 課題: C:\Program Files\Python をそのまま表示する。
- ヒント:
\\かr"..."。 - 例解答:
print("C:\\Program Files\\Python")
print(r"C:\Program Files\Python")
Python練習4:複数行のメッセージ
- 課題: 次の3行メッセージを1つの文字列で表示する。 Welcome
This is line two
Goodbye - 例解答:
print("Welcome\nThis is line two\nGoodbye")
# または
print("""Welcome
This is line two
Goodbye""")
Python実務での使い分けの指針
- 改行したい: `\n`(出力)/三連クォート(ソース上の見やすさ)
- 表の整列: `\t` は簡単、厳密に揃えたいなら `str.format` や f文字列で幅指定も検討
- 引用記号を含む: 外側のクォートを変えるか、`\”`/`\’` を使う
- Windows パス/正規表現: `r”…”`(raw 文字列)を優先
