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__の使い方

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