griech. Buchstaben in txt Datei ausgeben?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

griech. Buchstaben in txt Datei ausgeben?

Beitragvon mathi » Mittwoch 22. Oktober 2008, 13:00

Hallo allerseits:

Code: Alles auswählen

print u' \u03b1 > 45 !!!'  #alpha


funktioniert,

aber wenn ich dies in eine text-Datei schreiben will??

Code: Alles auswählen

sichern=file('Ergebnisse.txt','a')         
                    sichern.write('Winkel der Bewehrung \u03b1=%s °\n' % format(alpha,'%0.1f')) #alpha
                    sichern.write('------------------------------------------------\n')
                    sichern.close()
                    print u'Eingabe & Ergebnisse in -Ergebnisse.txt- gesichert'


geht nicht. Wo liegt mein Denkfehler bzw. wie kann ich erreichen was ich möchte??
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 22. Oktober 2008, 13:11

Also wenn du die Buchstaben UTF-8 kodierst in die Textdatei schreibst geht es wunderbar. Da müsste man sich natürlich vorher mit Encodings auseinandersetzen, aber das hatten wir ja erst vor ein paar Tagen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Beitragvon mathi » Mittwoch 22. Oktober 2008, 13:38

Danke hat geklappt,

kleines Problem dabei: \n zum Beginnen mit der neuen Zeile funktioniert nun nicht mehr, klar wegen (u'....'), wie kann ich es schaffen, dass die Ausgabe wieder in Zeilen untereinander funktioniert?

Code: Alles auswählen

sichern=codecs.open('Ergebnisse.txt','a', 'utf-8')         
                    sichern.write(u'-------------Schub in Fugen----------------\n')
                    sichern.write(u'Bauteilbreite b=%s cm\n' % format((b/10),'%0.1f'))       
                    sichern.write(u'Bauteilhöhe h=%s cm\n' % format((h/10),'%0.1f'))
                    sichern.write(u'Bewehrungsschwerpunkt d.1=%s cm\n' % format((d1/10),'%0.1f'))
                    sichern.write(u'Betongüte f.ck=%d N/mm²\n' % fck)
                    sichern.write(u'f.cd=%s N/mm²\n' % format(fcd))
                    sichern.write(u'Querkraft v.Ed=%s kN/m\n' % format(ved))
                    sichern.write(u'Reibungsbeiwert \u03bc=%s\n' % format(mue,'%0.1f'))    #mue
                    sichern.write(u'Winkel der Bewehrung \u03b1=%s °\n' % format(alpha,'%0.1f')) #alpha
                    if sorte==1:
                        sichern.write(u'Gitterträger: f.yd=%s N/mm²' % format(fyd))
                    else:
                        sichern.write(u'Betonstahl: f.yd=%s N/mm²' % format(fyd))
                    sichern.write(u'Rauigkeitsbeiwert c.j=%s\n' % format(cj,'%0.5f'))
                    sichern.write(u'v.Ed=%s kN/m' % format(vedf))
                    sichern.write(u'V.Rdj,ct=%s kN/m' % format(vrdjct))
                    sichern.write(u'V.Rdj,max=%s kN/m' % format(vrdjmax))
                    if vedf<vrdjct:
                        sichern.write(u'keine Verbundbewehrung erforderlich')
                    elif vedf>vrdjmax:
                        sichern.write(u'v.ed > v.Rdj,max')
                    else:
                        sichern.write(u'a.s,verbund=%s cm²/m' % format((averbund*10000)))
                    sichern.write(u'------------------------------------------------\n')
                    sichern.close()
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Mittwoch 22. Oktober 2008, 13:57

Also ehrlich gesagt sieht der Code ja recht "grauenvoll" aus ;-)

Entweder machst Du Dir vorher eine Liste von Einträgen und schreibst die dann in einer Schleife weg, oder aber Du legst diesen Textblock erst einmal irgend wo ab und nutzt dann Templating Mechanismen, um die variablen Werte reinzuschreiben. Diese zig Aufrufe von "sichern.write" sind ja extrem schlecht zu warten imho.

Du musst die Datei mit dem Modus "aw" öffnen, dann klappt's auch.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Beitragvon mathi » Mittwoch 22. Oktober 2008, 14:19

Hyperion hat geschrieben:Also ehrlich gesagt sieht der Code ja recht "grauenvoll" aus ;-)



erstmal danke, jetzt gehts.

ich habe den Code so geschrieben, weil ich es nicht besser weiß, könntest Du mir evtl. einen denkanstoß geben wie es Deiner Meinung nach z.B. aussehen könnte?

So soll die Ausgabe ja aussehen:
[code=]-------------Schub in Fugen----------------
Bauteilbreite b=100,0 cm
Bauteilhöhe h=20,0 cm
Bewehrungsschwerpunkt d.1=5,0 cm
Betongüte f.ck=20 N/mm²
f.cd=11,33 N/mm²
Querkraft v.Ed=100.000,00 kN/m
Reibungsbeiwert μ=0,7 # mue , da schlägt das coding wieder zu :-)
Winkel der Bewehrung α=90,0 ° #alpha
Betonstahl: f.yd=434,78 N/mm²
Rauigkeitsbeiwert c.j=0,40000
v.Ed=1.333,33 kN/m
V.Rdj,ct=343,84 kN/m
V.Rdj,max=2.833,33 kN/m
a.s,verbund=1.916.666,67 cm²/m
------------------------------------------------[/code]


und ohne vermessen sein zu wollen, hat jemand eine Ahnung wie ich statt f.ck -> fck ausgeben kann? kann man z.B. die Schriftgröße einzelner Buchstaben variieren?
BlackJack

Beitragvon BlackJack » Mittwoch 22. Oktober 2008, 16:50

Ich glaube die Frage nach Schriftgrössen hatten wir schon mal. Textdateien enthalten keine Informationen über die Schrift oder deren Grösse, sondern nur Zeichen. In welcher Schrift und Grösse die angezeigt werden, hängt ganz alleine vom Texteditor bzw. dem Programm mit dem der Text angezeigt wird, ab.

Für solche Formatierungen bräuchtest Du ein Datenformat, das Textauszeichnungen unterstützt. Einfachste Variante wäre wahrscheinlich HTML.

Oder Du fängst an, den Text in einem "2D-Layout" zu schreiben, so wie die armen Mathematiker das mit ihrer Schreibmaschine gemacht haben, bevor Knuth TeX erfand. :-)

Code: Alles auswählen

                   N
Betongüte f  = 20 ---
           ck     mm²


Das funktioniert dann natürlich nur wenn der Text mit einer "monospace"-Schriftart wie Courier (New) angezeigt wird.

Eventuell lohnt sich ein Blick in eine Template-Bibliothek wie Cheetah oder Genshi. Falls Du die Ausgaben irgend wann einmal mit HTML formatieren möchtest, auf jeden Fall.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 22. Oktober 2008, 19:36

BlackJack hat geschrieben:Eventuell lohnt sich ein Blick in eine Template-Bibliothek wie Cheetah oder Genshi. Falls Du die Ausgaben irgend wann einmal mit HTML formatieren möchtest, auf jeden Fall.

Genshi ist für HTML/XML nett, aber für Text würde ich eher auf Mako oder Jinja zurückgreifen. Die Text-Templates von Genshi sind nun ja, doch etwas arg eingeschränkt und man will ja nicht eine Template-Engine sofort wieder wechseln wenn sich rausstellt, dass die wenig bietet.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: __deets__, Bing [Bot], markjohannes