f-Strings sind in Python 3.6 verfügbar und sehr nützlich zum Formatieren von Strings:
>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'
Weitere Informationen hierzu finden Sie in Python 3s f-Strings: Eine verbesserte Syntax zur Formatierung von Zeichenfolgen (Handbuch) . Ich habe ein interessantes Muster gefunden:
Beachten Sie, dass die Verwendung dreifacher Klammern dazu führt, dass Ihre Zeichenfolge nur einzelne Klammern enthält:
>>> f"{{{74}}}" '{74}'
Sie können jedoch mehr Klammern anzeigen, wenn Sie mehr als dreifache Klammern verwenden:
>>> f"{{{{74}}}}" '{{74}}'
Und genau das ist der Fall:
>>> f'{74}'
'74'
>>> f'{{74}}'
'{74}'
Wenn wir nun von zwei {
auf drei gehen, ist das Ergebnis dasselbe:
>>> f'{{{74}}}'
'{74}' # same as f'{{74}}' !
Wir brauchen also bis zu 4! ( {{{{
) um zwei geschweifte Klammern als Ausgabe zu erhalten:
>>> f'{{{{74}}}}'
'{{74}}'
Warum ist das? Was passiert mit zwei geschweiften Klammern, damit Python von diesem Moment an eine zusätzliche benötigt?
quelle
f"{{2+2}}"
undf"{{{2+2}}}"
, das sind'{2+2}'
und'{4}'
jeweilsf'{2+2}'
4,f'{{2+2}}'
2 + 2,f'{{{2+2}}}'
returns {4},f'{{{{2+2}}}}'
➝ {{2 + 2}} usw. zurückgegeben werden. Es macht Sinn, rätselt aber auf den ersten Blick ein bisschen.f'{74}'
es dasselbe ist wief'74'
.str.format
macht das auch."{74}".format(...)
würde eine Sequenz mit mindestens 74 Elementen erfordern.Antworten:
Doppelte Klammern entziehen sich den Klammern, so dass keine Interpolation stattfindet:
{{
➝{
und}}
➝}
. Und74
bleibt eine unveränderte Zeichenfolge'74'
.Bei dreifachen Klammern werden die äußeren Doppelklammern wie oben ausgeblendet. Die inneren Klammern führen dagegen zu einer regelmäßigen String-Interpolation des Wertes
74
.Das heißt, die Zeichenfolge
f'{{{74}}}'
ist äquivalent zuf'{{ {74} }}'
, jedoch ohne Leerzeichen (oder äquivalent zu'{' + f'{74}' + '}'
).Sie können den Unterschied sehen, wenn Sie die numerische Konstante durch eine Variable ersetzen:
quelle