Seite 1 von 1

Mehrfachausgabe - woher?

Verfasst: Dienstag 17. Mai 2011, 20:24
von Dark Shadow
Hallo Community!
Ich habe das Problem, dass bei einer Ausgabe (in meinem Fall in das Textfeld 'out') die Daten sooft reingeschrieben werden, wie die Nummer der Zeile lautet. Z.B. habe ich die Werte 1, 2, 3 und 4, wobei 1 und 2 in der 1. und 3 und 4 in der 2. Zeile Stehen. Jetzt bekomme ich die Ausgabe (die "|" sind beabsichtigt):

Code: Alles auswählen

1         |10        |
2         |20        |2         |20        |
40        |80        |40        |80        |40        |80        |
Mein Code (nur ein Ausschnitt, der ganze wäre zu lang) lautet wie folgt:

Code: Alles auswählen

                fm = ''
                format_ = "content = fm.format("
                for line in data.split("<|>")[:-1]:
                    fields = line.split("|")[:-1]
                    for count in range(0, len(fields)):
                        fm += "{%d:<10}|"%(count)
                        field = fields[count]
                        try: int(field)
                        except: field = "'" + field + "'"
                        format_ += "%s,"%(str(field))

                    format_ = format_[:-1] + ")"
                    exec(format_)
                    format_ = "content = fm.format("
                    out.insert(END, content + "\n")
Eingabe ist ein String wie zum Beispiel "1|10|<|>2|20|<|>40|80|<|>". Ich splitte alles auf und bekomme die einzelnen Zellen zurück, die ich in einem String formatiere und dann in das Textfeld einfüge.

Meine Fragen lauten:
Gibt es jemanden, der die Mehrfachausgabe erkennt und wenn ja, wo ist diese Stelle in meinem Code?

Ich hoffe, ihr könnt mir helfen und bedanke mich schonmal im Vorraus,
Dark Shadow

Re: Mehrfachausgabe - woher?

Verfasst: Dienstag 17. Mai 2011, 20:33
von Hyperion
Willst Du uns nicht lieber beschreiben, was Du erreichen willst? Ich habe zwar auch noch nicht wirklich verstanden, was schief läuft, aber null Ahnung von dem, was Du erreichen willst!

Re: Mehrfachausgabe - woher?

Verfasst: Dienstag 17. Mai 2011, 21:24
von Dark Shadow
Ich dachte, dass hätte ich reingeschrieben. :oops:
Ich möchte die Werte als Tabelle in mein Text-Widget einfügen. Dafür verwende ich den String-format-Befehl. Allerdings liefert er zu viele Werte/werden zu viele Werte in mein Text-Widget eingefügt.

Re: Mehrfachausgabe - woher?

Verfasst: Dienstag 17. Mai 2011, 21:39
von BlackJack
@Dark Shadow: Dann würde ich sagen schmeiss den Code weg, und schreib den in Python und nicht Python das Python-Quelltext erzeugt der dann ausgeführt wird um das Ergebnis zu produzieren — oder halt auch nicht. Umständlicher geht es doch kaum. Vergiss am besten dass es ``exec`` überhaupt gibt.

Edit: Kann es sein dass Du einfach so etwas hier suchst!?

Code: Alles auswählen

data = '1|10|<|>2|20|<|>40|80|<|>'

for line in data.split('<|>')[:-1]:
    print ''.join('%-10s|' % field for field in line.split('|')[:-1])

Re: Mehrfachausgabe - woher?

Verfasst: Mittwoch 18. Mai 2011, 20:29
von Dark Shadow
Ja, so sieht's aus. :mrgreen:

Danke für Deine Lösung, BlackJack. Einfacher geht es wahrscheinlich nicht mehr.

Danke euch beiden für eure schnelle Hilfe!
Dark Shadow