Pythonにおいて、文字列は最も基本的なデータ型の一つです。テキストデータを扱う上で、文字列をどのように定義し、特殊な文字をどう表現するかを理解することは非常に重要です。
この記事では、Pythonで文字列を定義するための様々な方法(クォートの使い方、エスケープ文字、raw文字列、複数行文字列)について解説します。
シングルクォートとダブルクォート
Pythonでは、文字列を定義するためにシングルクォート ('
) またはダブルクォート ("
) のどちらでも使用できます。
print('これはシングルクォートを使った文字列です。')
print("これはダブルクォートを使った文字列です。")
この二つを使い分ける主な利点は、文字列の中にクォート自体を含めたい場合です。例えば、ダブルクォートで囲んだ文字列の中では、シングルクォートをそのまま文字として使えます。
# ダブルクォートの中にシングルクォートを含める
message = "I'm a Python programmer."
print(message)
エスケープ文字
もし、同じ種類のクォートを文字列内で使いたい場合や、改行などの特殊な文字を表現したい場合は、エスケープ文字を使います。エスケープ文字は、バックスラッシュ(\
、日本では円マーク¥
で表示されることが多い)と、それに続く一文字で構成されます。
エスケープ文字 | 意味 |
\' | シングルクォート |
\" | ダブルクォート |
\n | 改行 |
\t | タブ |
\\ | バックスラッシュ自体 |
# シングルクォートをエスケープ
message = 'He said, \'Hello!\''
print(message)
# 改行文字(\n)を使って複数行に表示
multiline_message = "First line.\nSecond line.\nThird line."
print(multiline_message)
実行結果:
He said, 'Hello!'
First line.
Second line.
Third line.
raw文字列
ファイルパスのように、バックスラッシュを文字そのものとして扱いたい場合、エスケープ文字のルールが煩わしくなることがあります。そのような場合は、文字列の開始クォートの前に r
を置くことでraw文字列として扱うことができます。
raw文字列の中では、バックスラッシュは特別な意味を持たず、単なる文字として解釈されます。
# 通常の文字列だと \\ と書く必要がある
file_path_normal = 'C:\\Users\\Documents\\file.txt'
# raw文字列ならそのまま書ける
file_path_raw = r'C:\Users\Documents\file.txt'
print(f"通常の文字列: {file_path_normal}")
print(f"raw文字列: {file_path_raw}")
三連クォートによる複数行文字列
複数行にまたがる長い文字列を定義したい場合、三連クォート('''
または """
)を使うと非常に便利です。三連クォートで囲まれた範囲では、改行がそのまま文字列に反映されます。
# 三連クォートで複数行の文字列を定義
email_body = '''
こんにちは、田中さん
来週の会議の日程が確定しましたので、お知らせします。
日時: 9月5日(火) 10:00-
場所: 第3会議室
ご確認のほど、よろしくお願いいたします。
'''
print(email_body)
## 複数行コメント
この三連クォートは、複数行にわたるコメントとしてもよく利用されます。プログラムの先頭に関数の説明を書く際などにも便利です。
'''
このスクリプトは、
ユーザーデータCSVを処理して、
月次レポートを生成するものです。
'''
def process_user_data():
# ...関数の処理...
pass
まとめ
- 文字列は
'
と"
のどちらでも定義できます。 \n
などのエスケープ文字で特殊な文字を表現します。- バックスラッシュをそのまま扱いたい場合は**raw文字列 (
r'...'
)**を使います。 - 改行を含む長い文字列は**三連クォート (
'''...'''
)**で定義すると便利です。
これらの機能を適切に使い分けることで、あらゆるテキストデータを柔軟に扱うことができます。