エスケープシーケンス
OSで使用している文字の中には、人が「文字」と認識できる情報以外に、OS上の制御文字や文字編集情報などの「文字」以外の情報も文字情報として含まれています。これらの文字の事を「特殊文字」と呼ぶ場合もあります。この特殊文字は、人が文字入力してOSに伝えるためにエスケープシーケンスが存在します。
エスケープシーケンスを意図して使用し、特殊文字を表示している場合は問題ありませんが、¥マークを何の配慮もなく、プログラム内に記載したり、DBへのデータ取込を行うテキストファイル内に含まれている場合、¥マークをエスケープシーケンスの一部とOSが解釈し、エラーが発生したり、意図しない状態でデータが登録/表示する場合があります。
Pythonでは、引用符(「”」または「’」)を3つ重ねて付けると、改行を含んだ文字列と定義できます。
しかし、インデントしたブロックのなかで改行を含んだ文字列を変数として定義する場合など
インデントがずれて見づらくなってしまいます。
【例】
def func():
words = “””ゆく河の流れは越えずして
しかももとの水にあらず”””
print(words)
func()
↓
ゆく河の流れは越えずして
しかももとの水にあらず
上記の場合、改行後の文字の先頭にインデントを入れてしまうと、その部分も文字列の一部として解釈されてしまいます。
このようなときは、エスケープシーケンスの「¥n」を使えば、改行を含む文字列を1行で記述でき、インデントの崩れを防ぐことができます。
【例】
def func():
words = ”ゆく河の流れは越えずして¥nしかももとの水にあらず”
print(words)
func()
↓
ゆく河の流れは越えずして
しかももとの水にあらず
エスケープシーケンスとは、改行やタブのようなコントロールコードを埋め込む為のものですが
ダブルクォーテーションで囲まれた文字列にダブルクォーテーションを入れたい場合や、ASCII文字やユニコード文字を
数値として埋め込む場合などにも利用できます。
【よく使われるエスケープシーケンス】
エスケープシーケンス | 説明 |
---|---|
¥n | 改行 |
¥r | 改行(CR、キャリッジ・リターン) |
¥t | 水平タブ |
¥f | 改ページ(フォーム・フィード) |
¥’ | シングルクォーテーション |
¥” | ダブルクォーテーション |
¥¥ | バックスラッシュ |
¥x61 | 16進数に対応する8ビット文字 |
¥u3042 | 16ビット16進数に対応するUnicode文字、16進数部分には「0x」は不要 |
¥0 | null文字 |
※MacやLimuxでは「¥」を「\」に置き換える
三重クオート文字列中には、三連のエスケープされないクオート文字で 文字列を終端してしまわないかぎり、
エスケープされていない改行やクオートを 書くことができます (さらに、それらはそのまま文字列中に残ります)。
(ここでいう ``クオート'' とは、文字列の囲みを開始するときに使った文字 を示し、' か " のいずれかです)。
"r" または "R" 接頭文字がつかないかぎり、 文字列中のエスケープシーケンスは標準 C で使われているのと同様の 法則にしたがって解釈されます。以下に Python で認識されるエスケープ シーケンスを示します