この記事では、Pythonの文字列中に文字列をフォーマットする際にクォーテーションを付ける方法を解説します。
通常、文字列中に文字列をフォーマットするとクォーテーションは付いていません。
# formatメソッド
print('{}'.format('abc')) # abc
# フォーマット済み文字列リテラル
print(f'{"abc"}') # abc
しかし、ちょくちょくクォーテーションを付けて文字列をフォーマットしたい場合があります。上記の例の場合では、出力を'abc'
にしたいってことですね。
そんな時にクォーテーションを付けて文字列中にフォーマットする方法を見ていきましょう!
直接記述する
文字列リテラル中に文字列リテラルとして使用しているクォーテーションとは異なるクォーテーションを文字として使用することが可能です。
例えば、'(シングルクォーテーション)
を文字列リテラルとして使っている場合、"(ダブルクォーテーション)
を文字として使用可能です。(例: '"abc"'
)
フォーマット済み文字列リテラルの場合
val = 'abc'
text = f'"{val}"'
print(text)
実行結果
"abc"
formatメソッドの場合
val = 'abc'
text = '"{}"'.format(val)
print(text)
実行結果
"abc"
しかし、この方法では文字列以外が渡された場合でもクォーテーションが付いてしまう。また、クォーテーションが増えてしまうので単純に見づらい。
変換フラグを使用する
{}
内に!r
を指定することでフォーマットする値が文字列の場合のみクォーテーションを付けることができます。
フォーマット済み文字列リテラルの場合
val = 'abc'
text = f'{val!r}'
print(text)
実行結果
'abc'
formatメソッドの場合
val = 'abc'
text = '{!r}'.format(val)
print(text)
実行結果
'abc'
文字列以外をフォーマットする際はクォーテーションが付かない。
# 文字列以外を指定する
val = 123
text = f'{val!r}'
print(text)
実行結果
123
!r
は、repr()
関数を呼んでいます。
Link書式指定文字列の文法
まとめ
文字列中に文字列をフォーマットする際にクォーテーションを付ける方法を解説しました。
例えば、動的に__repr__
メソッドを生成したい場合なんかに使用できたりします。
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ