Python で行う仕事には文字列処理もかなり多いと思う。
ので、文字列について復習しようかな、と。
まず、シングルクォートとダブルクォート。
Pythonではシングルクォート、ダブルクォートのどちらを使っても文字列を記述可能。
トリプルクォートも使用は可能。トリプルクォート使うとどうなるかは以前書いたのでそちらを参照して欲しい。私も読み返した。
例えば次のようなコードを実行してみる。
#!/usr/bin/python
print 'Python string 1'
print "Python string 2"
実行結果は次のようになる。
$ ./str_1.py
Python string 1
Python string 2
シングルクォートでもダブルクォートでも出力結果は同じになる。次にpythonをシェル上で実行して、二通りの文字列を入力してみる。
$ python
Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> "string"
'string'
>>> 'string'
'string'
>>>
と、こんな感じで、結果的に同じものに評価されている。シングルクォートを使っても、ダブルクォートを使っても内部的にも同じと考えてよいのではないだろうか。では、どう使い分ければいいかというと、シングルクォート、ダブルクォート自体を文字列に含めたい時にそれぞれを使う。
>>> "Single'quotation"
"Single'quotation"
>>> 'Single'quotation'
File "", line 1
'Single'quotation'
^
SyntaxError: invalid syntax
この例は、どちらもシングルクォートを含んだ文字列を使用したものだが、一つ目はダブルクォートで囲ったもの(“Single’quotation”)、二つ目はシングルクォートで囲ったもの(‘Single’quotation’)を実行してみたものである。
ダブルクォートで囲った方は、”Single’quotation”と評価結果が出ているが、シングルクォートで囲った方はSyntaxErrorとなっている。すでにみなさんお分かりとは思うが、文字列Single’quotationの中に含まれているシングルクォートが、文字列を囲っているシングルクォートの終了と判断されてしまうためである。こういう場合には、ダブルクォートで囲む。
では、シングルクォートとダブルクォートの両方が含まれているときにはどうすればよいか試してみたい。
ab’cd”ef’gh”ij
この文字列をどうやったらPythonで正しく認識されるように書けるかやってみる。
(1) '''ab'cd"ef'gh"ij'''
(2) """ab'cd"ef'gh"ij"""
(3) 'ab\'cd"ef\'gh"ij'
(4) "ab'cd" '"ef' "'gh" '"ij'
とりあえず思いついたのは、この4通り。(1)と(2)はトリプルクォートを使う方法。シングルクォートとダブルクォートが入り交じっているならトリプルクォートを使えばいいと。
(3)は、エスケープシーケンスを利用する方法。バックスラッシュをシングルクォート、ダブルクォートの前に書いておくと、単なる文字列として扱われるので、あとはシングルクォート(あるいはダブルクォート)で囲んでおけばOK。
(4)がトリッキーだが、重要なやつ。Pythonでは、文字列を空白で区切って並べておくと連結されるので、これでも同じことになる。実際にそれぞれを入力してみると、同じ結果が得られる。
>>> '''ab'cd"ef'gh"ij'''
'ab\'cd"ef\'gh"ij'
>>> """ab'cd"ef'gh"ij"""
'ab\'cd"ef\'gh"ij'
>>> 'ab\'cd"ef\'gh"ij'
'ab\'cd"ef\'gh"ij'
>>> "ab'cd" '"ef' "'gh" '"ij'
'ab\'cd"ef\'gh"ij'
すべてシングルクォートを使い、ダブルクォートをバックスラッシュでエスケープした文字列になっている。
続きます。
トラックバックURL
コメントをどうぞ



