Python - 文字列リテラルを記述する

文字列リテラルの記述

シングルクォート ' 、またはダブルクォート " で囲むと文字列 (str 型オブジェクト) になります。シングルクォート ' 、またはダブルクォート " のどちらで囲んでも、値としては等価になります。

s_sq = 'abc'
print(s_sq)
# abc

print(type(s_sq))
# <class 'str'>

s_dq = "abc"
print(s_dq)
# abc

print(type(s_dq))
# <class 'str'>

print(s_sq == s_dq)
# True
クォートを使った文字列

ただしどちらのクォートで囲むかによって、文字列中の引用符の扱いが異なります。シングルクォート ' で囲んだ場合、引用符としてダブルクォート " がそのまま使えますが、シングルクォート ' を使う場合はバックスラッシュでエスケープ \' する必要があります。逆にダブルクォート " で囲んだ場合、引用符としてシングルクォート ' がそのまま使えますが、ダブルクォート " を使う場合はバックスラッシュでエスケープ \" する必要があります。

s_sq = 'a\'b"c'
print(s_sq)
# a'b"c

s_sq = 'a\'b\"c'
print(s_sq)
# a'b"c

s_dq = "a'b\"c"
print(s_dq)
# a'b"c

s_dq = "a\'b\"c"
print(s_dq)
# a'b"c
引用符のエスケープ

シングルクォート ' 、またはダブルクォート " を3つ使ったトリプルクォート ''', """ で囲まれた文字列は、複数行をまとめて扱うことができます。トリプルクォートのなかに複数行の文字列を入れると、改行文字、および先頭や末尾にスペースがある場合、それらも残るため注意が必要です。

>>> poem = '''I do not like thee, Doctor Fell.
...     The reason why, I cannot tell.
...     But this I know, and know full well:
...     I do not like thee, Doctor Fell.
... '''
>>> print(poem)
I do not like thee, Doctor Fell.
    The reason why, I cannot tell.
    But this I know, and know full well:
    I do not like thee, Doctor Fell.

>>>
トリプルクォートの文字列

また、print() の出力と、対話型インタープリタが行う自動エコーの出力には違いがあります。対話型インタープリタでは、以下のように改行文字は \n と表示され、複数回繰り返すスペースも省略されます。

>>> poem2
'I do not like thee, Doctor Fell.\n The reason why, I cannot tell.\n
But this I know, and know full well:\n I do not like thee, Doctor
Fell.\n'
トリプルクォートの文字列

シングルクォート ' 、またはダブルクォート " で囲んだ文字列を複数行にした場合、SyntaxError が発生します。ただし、明示的な改行コード \n を文字列内に含めることで改行することができます。

s = 'I do not like thee, Doctor Fell.
The reason why, I cannot tell.
But this I know, and know full well:
I do not like thee, Doctor Fell.'
# SyntaxError: EOL while scanning string literal

s = 'I do not like thee, Doctor Fell.\nThe reason why, I cannot tell.\nBut this I know, and know full well:\nI do not like thee, Doctor Fell.'
print(s)
# I do not like thee, Doctor Fell.
# The reason why, I cannot tell.
# But this I know, and know full well:
# I do not like thee, Doctor Fell.
文字列内の改行

トリプルクォート ''', """ で囲まれた文字列は、シングルクォート ' 、またはダブルクォート "のどちらでも等価になります。

s_tq_sq = '''\'abc\'
"xyz"'''

print(s_tq_sq)
# 'abc'
# "xyz"

s_tq_dq = """'abc'
\"xyz\""""

print(s_tq_dq)
# 'abc'
# "xyz"

print(s_tq_sq == s_tq_dq)
# True
クォートの文字列の等価

また、括弧を使うことで以下のようも記述できます。

s_multi = ('abc\n'
           'xyz')

print(s_multi)
# abc
# xyz
括弧を使った記述

関連記事