Python での文字列の基本

完了

Python の文字列は簡単で単純に見えますが、文字列の規則に関するいくつかの複雑な点を理解しておくことが重要です。 規則を知ることにより、値の変更やテキストの書式設定を行ったとき、文字列の動作に驚かされずに済みます。

単純な文字列

このユニットの例では、次のように、変数に割り当てられた月に関する 1 つの事実が与えられます。

fact = "The Moon has no atmosphere."
print(fact)

テキストが変数に割り当てられていることが出力 The Moon has no atmosphere. からわかります。

文字列の不変性

Python では文字列は不変です。 つまり、変更できません。 Python では文字列を変更してもエラーが発生しないので、文字列型のこの特徴には驚くことがあります。

変数に割り当てられている 1 つの事実に別の事実 (文章) を追加する必要があります。 次の例のように、2 番目の事実を追加すると変数が変更されるように "見えます"。

fact = "The Moon has no atmosphere."
fact + "No sound can be heard on the Moon."

出力は The Moon has no atmosphere.No sound can be heard on the Moon. のようになります。

変数 fact を変更したように見えるかもしれませんが、値を少し調べると、元の値は変更されていないことがわかります。

fact = "The Moon has no atmosphere."
fact + "No sound can be heard on the Moon."
print(fact)

出力: The Moon has no atmosphere.

秘訣は、必ず戻り値を使用することです。 Python では、文字列を追加しても文字列は変更されませんが、"新しい" 文字列が結果として返されます。 この新しい結果を保持するには、新しい変数に代入する必要があります。

fact = "The Moon has no atmosphere."
two_facts = fact + "No sound can be heard on the Moon."
print(two_facts)

出力: The Moon has no atmosphere.No sound can be heard on the Moon.

文字列に対する操作では常に、結果として新しい文字列が生成されます。

引用符の使用について

Python の文字列は、単一引用符、二重引用符、または三重引用符で囲むことができます。 どれを使用しても同じですが、1 つのプロジェクト内では 1 つの種類を一貫して使用するのが最善です。 たとえば、次の文字列では二重引用符が使われています。

moon_radius = "The Moon has a radius of 1,080 miles."

ただし、文字列の中にやはり引用符で囲まれた単語、数字、または特殊文字 ("部分文字列") が含まれている場合は、別のスタイルを使用する必要があります。 たとえば、次に示すように、部分文字列で二重引用符を使用する場合は、文字列全体を単一引用符で囲みます。

'The "near side" is the part of the Moon that faces the Earth.'

同様に、文字列内のどこかに単一引用符 (または次の例の Moon's のようなアポストロフィ) がある場合は、文字列全体を二重引用符で囲みます。

"We only see about 60% of the Moon's surface."

次に示すように、単一引用符と二重引用符を入れ替えないと、Python インタープリターで構文エラーが発生する可能性があります。

'We only see about 60% of the Moon's surface.'
  File "<stdin>", line 1
    'We only see about 60% of the Moon's surface.'
                                       ^
SyntaxError: invalid syntax

テキストに単一引用符と二重引用符の組み合わせがある場合は、三重引用符を使用してインタープリターに関する問題を回避できます。

"""We only see about 60% of the Moon's surface, this is known as the "near side"."""

複数行テキスト

複数行のテキストを 1 つの変数として定義するには、いくつかの異なる方法があります。 最も一般的な方法は次のとおりです。

  • 改行文字 (\n) を使用します。
  • 三重引用符 (""") を使用します。

出力のときは、改行文字によってテキストが複数の行に分割されます。

multiline = "Facts about the Moon:\n There is no atmosphere.\n There is no sound."
print(multiline)
Facts about the Moon:
 There is no atmosphere.
 There is no sound.

三重引用符を使用して、同じ結果を得ることができます。

multiline = """Facts about the Moon:
 There is no atmosphere. 
 There is no sound."""
print(multiline)