Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #5647
| From | Stefan Behnel <python-de@behnel.de> |
|---|---|
| Newsgroups | de.comp.lang.python |
| Subject | Re: [Python-de] f-string Formatanweisung |
| Date | 2020-06-22 15:14 +0200 |
| Message-ID | <mailman.253.1592831688.24731.python-de@python.org> (permalink) |
| References | <rcq1j2$5b5$1@dont-email.me> <3e3c30fe-d11e-6061-2ed4-0a7015359882@behnel.de> |
Hallo nochmal,
es hilft doch durchaus, nicht nur Code zu lesen, sondern auch den Text, den
du dazu geschrieben hast. :)
ruppert@hs-worms.de schrieb am 22.06.20 um 12:36:
> das unten befindliche Programm funktioniert mit f-String-Formatierung
> nicht so, wie ich das erwarte. Wenn ich das F-String-Format, das ich
> haben möchte, zuerst als Striing formatiere (s), sieht es richtig aus.
Du meinst wohl diese Zeilen:
f = "{{:0{:1d}d}} {{:0{:1d}b}} {{:0{:1d}b}}".format(dl,fw,fw)
# s wird in der for-Schleife unten nicht interpretiert,
# sondern als string ausgegeben:
s = 'f"' + str(f"{{i:0{dl}d}} {{gray:0{fw}b}} {{bin:0{fw}b}}") + '"'
bzw. wenn ich mir nur den f-string ansehe:
>>> dl = 5
>>> fw = 6
>>> f"{{i:0{dl}d}} {{gray:0{fw}b}} {{bin:0{fw}b}}"
'{i:05d} {gray:06b} {bin:06b}'
Für mich sieht das soweit erstmal korrekt aus. Ich vermute, du möchtest
etwas machen, was mit .format() funktioniert aber mit f-strings nicht: den
Formatstring programmatisch erzeugen statt hinzuschreiben, stimmt das?
f-strings sind ein festes Sprachkonstrukt, das direkt in der Sprache (bzw.
im Parser) auf String-Literalen ausgewertet wird, daher ist es nicht
möglich, f-strings zu generieren. (Ok, du könntest eval() verwenden, aber
das ist recht langsam und auch fehleranfällig – tu's lieber nicht.)
".format()" dagegen wird dynamisch auf beliebigen Strings ausgewertet,
nicht nur auf Literalen.
Du kannst .format() und f-strings aber auch mischen:
formatiere_ausgabe = \
f"{{i:0{dl}d}} {{gray:0{fw}b}} {{bin:0{fw}b}}".format
print(formatiere_ausgabe(i=i, gray=gray, bin=bin))
Hier ist "formatiere_ausgabe" die ".format" String-Methode, angewendet auf
meinen Formatierungsstring, den ich per f-string erzeugt habe. Wenn ich
diese Methode dann aufrufe, und meine drei Argumente übergebe, dann wird
meine Ausgabe entsprechend dem Formatierungsstring zusammengestellt.
Stefan
Back to de.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
f-string Formatanweisung ruppert@hs-worms.de - 2020-06-22 10:36 +0000
Re: [Python-de] f-string Formatanweisung Mike Müller <mmueller@python-academy.de> - 2020-06-22 14:27 +0200
Re: [Python-de] f-string Formatanweisung Mike Müller <mmueller@python-academy.de> - 2020-06-22 14:31 +0200
Re: [Python-de] f-string Formatanweisung ruppert@hs-worms.de - 2020-06-22 13:22 +0000
Re: [Python-de] f-string Formatanweisung Stefan Behnel <python-de@behnel.de> - 2020-06-22 14:55 +0200
Re: f-string Formatanweisung "Andreas B." <ab@sysing.de> - 2020-06-22 15:03 +0200
Re: f-string Formatanweisung ruppert@hs-worms.de - 2020-06-22 13:28 +0000
Re: [Python-de] f-string Formatanweisung Stefan Behnel <python-de@behnel.de> - 2020-06-22 15:14 +0200
Re: [Python-de] f-string Formatanweisung ruppert@hs-worms.de - 2020-06-22 14:03 +0000
Re: [Python-de] f-string Formatanweisung ruppert@hs-worms.de - 2020-07-13 11:13 +0000
csiph-web