Categories: Python

Pythonの文字列の記述方法: シングルクォーテーションとダブルクォーテーションの違い

Pythonのプログラムの中で文字列を記述する場合には、文字をやシングルクォーテーション(‘)やダブルクォーテーション(“)で囲います。例えば以下のコードを実行すると、いずれのprintも成功します。文字列の記述方法が2種類あるということになりますが、違いはあるのでしょうか。

sentence1 = "sentence1"
sentence2 = 'sentence2'
print(sentence1)
print(sentence2)

シングルクォーテーションとダブルクォーテーションの違い

まず、これらに関して効果の違いはありません。ただ、コードの可読性の観点から、いずれかの表記に統一する方がよいでしょう。

唯一の違いがあるとすると、文字列そのものにシングルクォーテーションやダブルクォーテーションが含まれるケースです。

sentence1 = "I'll go there"
sentence2 = 'I'll go there'
print(sentence1)
print(sentence2)

上記のコードを実行すると、sentence2の方はエラーします。シングルクォーテーションが三つあるためです。最初の二つのシングルクォーテーションで囲まれた「’I’」が文字列として認識されますが、その後の「ll go there’」が残されて上手く解釈されません。

すなわち、文字列そのものにシングルクォーテーションが混ざる場合にはダブルクォーテーションで挟み、文字列そのものにダブルクォーテーションが混ざる場合にはシングルクォーテーションで挟めばエラーしません。

とはいえ、シングルクォーテーションとダブルクォーテーションの両方が文字列に混ざっている場合は上手くいかないですし、文字列を中身を見ながら記述の仕方を変えることは煩雑です。よって、個人的にはエスケープシーケンスを使うことをお勧めします。エスケープシーケンスは、特定の文字をコマンドの一部ではなく、文字そのものとして解釈できるようにしてくれるもので、シングルクォーテーションの場合は「\’」、ダブルクォーテーションの場合は「\”」と書けばOKです。

先ほどのコードであれば、「sentence2 = ‘I\’ll go there’」と記述すれば、文字列中のシングルクォーテーションは文字列の一部として正しく解釈されます。

sentence1 = "I'll go there"
sentence2 = 'I\'ll go there'
print(sentence1)
print(sentence2)

Haruoka