Python PR

【Python】文字列中に文字列をフォーマットする際にクォーテーションを付ける

記事内に商品プロモーションを含む場合があります

この記事では、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__メソッドを生成したい場合なんかに使用できたりします。

__str__と__repr__の使い方

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ