Seite 1 von 1
RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 16:10
von Schlori
Hallo,
ich würde gerne in eine RTF-Datei schreiben.
Code: Alles auswählen
import os
file = "test.rtf"
with open (file, "w") as datei:
datei.write("{\\rtf1 '{0}'}".format("hier soll der Text stehen"))
os.startfile(file)
Ich bekomme die u.s. Fehlermeldung, die auch durchaus einleuchtend ist. Wie aber kann ich dies umgehen?
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Python34\rtf_datei.py", line 4, in <module>
datei.write("{\\rtf1 '{0}'}".format("hier soll der Text stehen"))
ValueError: unexpected '{' in field name
Danke schon mal im Voraus für Eure Hilfe
Re: RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 16:13
von __deets__
Da du Format-Strings benutzt, sind { und } besondere Zeichen. Wenn man die jetzt in der Ausgabe haben will, muss man sie "escapen" wie man so schoen denglischt. Aehnliches tut man zB mit \, der dazu benutzt wird, neue Zeilen, Tabulatoren etc einzufuegen - und wenn man \ will, muss man \\ schreiben.
Und das sollte auch hier die Loesung sein. Einfach {{ und }} fuer die geschweiften Klammern schreiben, die du behalten willst in der Ausgabe:
Re: RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 16:48
von Schlori
Ja, das war auch mein erster Gedanke, aber es scheint hier nicht zu funktionieren

Re: RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 17:02
von kbr
Nutzt Du noch Python 2.6? Seit 2.7 geht das in der gezeigten Form.
Re: RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 17:07
von ThomasL
Ich vermute mal, er benutzt Python 3.4
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Python34\rtf_datei.py", line 4, in <module>
datei.write("{\\rtf1 '{0}'}".format("hier soll der Text stehen"))
ValueError: unexpected '{' in field name
Re: RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 17:12
von Schlori
Code: Alles auswählen
import os
file = "test.rtf"
with open (file, "w") as datei:
datei.write ("{\\rtf1 {{0}} }".format("hier soll der text stehen"))
os.startfile(file)
... produziert den selben Fehler
P.S. Ich nutze Python 3.4
Re: RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 18:28
von kbr
Du hast ja auch die falschen Klammern gedoppelt. Vergleiche noch einmal mit den Beispiel von __deets__.
Re: RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 18:31
von ThomasL
ich vermute du möchtest die beiden äußeren {} in die Datei schreiben und anstelle von {0} soll "hier soll der text stehen" eingefügt werden.
Code: Alles auswählen
with open (file, "w") as datei:
datei.write ("{{\\rtf1 {0} }}".format("hier soll der text stehen"))
mit f-Strings gehts auch so:
Code: Alles auswählen
text = "hier soll der text stehen"
with open (file, "w") as datei:
datei.write (f"{{\\rtf1 {text} }}")
Re: RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 20:37
von Schlori
kbr hat geschrieben: Freitag 25. Mai 2018, 18:28
Du hast ja auch die falschen Klammern gedoppelt. Vergleiche noch einmal mit den Beispiel von __deets__.
... und das heißt?
Wie würde mein Statement dann aussehen?
Re: RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 20:38
von __deets__
Hast du dir mein Beispiel mal wirklich angeschaut? Sieht gerade überhaupt nicht danach aus.
Re: RTF Datei schreiben
Verfasst: Freitag 25. Mai 2018, 20:45
von ThomasL
Schlori hat geschrieben: Freitag 25. Mai 2018, 20:37
... und das heißt?
Wie würde mein Statement dann aussehen?
Muss ich mich jetzt ärgern, Zeit für dich verschwendet zu haben?
Re: RTF Datei schreiben
Verfasst: Samstag 26. Mai 2018, 06:46
von Schlori
Sorry, war völlig verblendet.
Danke für die Tipps
... war keine Zeitverschwendung
