Vergleich von zwei Files

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.
Antworten
bords0
User
Beiträge: 234
Registriert: Mittwoch 4. Juli 2007, 20:40

mzh hat geschrieben:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/mzh/shellscripts/comp.py", line 21, in ?
    control = map(lambda x, y: x.split()[0] == y.split()[0], data1[:-1], data2[:-1])
  File "/home/mzh/shellscripts/comp.py", line 21, in <lambda>
    control = map(lambda x, y: x.split()[0] == y.split()[0], data1[:-1], data2[:-1])
IndexError: list index out of range
ja, ich krieg schon mit, dass da ein IndexError auftritt, weil die Liste wohl leer sein wird, da es ja keine Zeichen auf einer leeren Zeile gibt. Es ist nicht split(), das scheitert, sondern split()[0] und ich weiss bis jetzt nicht, wie ich eine leere Zeile berücksichtigen kann (ich kann ja kein if statement in lambda einbauen oder doch?).
@BlackJack: hier ist es also notwendig, den IndexError abzufangen. Mein Ziel ist es jedenfalls, das ganze ohne for-loop zu erledigen.
Mal [:1] statt [0] versuchen?
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Danke, das ist sehr hilfreich.
[url=http://www.proandkon.com]proandkon.com[/url]
BlackJack

@mzh: Ansonsten muss man das ja auch nicht mit aller Gewalt in eine ``lambda``-Funktion quetschen wollen. In einer mit ``def`` definierten Funktion kann man mehr machen, zum Beispiel den Sonderfall mit einem ``if`` behandeln.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

die potentiellen Leerzeilen war ja auch das, was mich zu meinem Codebewegt hat. Da werden diese nämlich gekonnt ignoriert. :-) . Na gut, Nachteile -> siehe oben. ;-)

Gruß, noisefloor
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

BlackJack hat geschrieben:@mzh: Ansonsten muss man das ja auch nicht mit aller Gewalt in eine ``lambda``-Funktion quetschen wollen. In einer mit ``def`` definierten Funktion kann man mehr machen, zum Beispiel den Sonderfall mit einem ``if`` behandeln.
Natürlich, da stimme ich voll zu... für mich ist es einfach eine gute Gelegenheit, die verschiedenen Sprachelemente von Python ein bisschen besser kennen zu lernen. Das war die Motivation für mich, das so zu versuchen.

@noisefloor: soweit ich das sehe, löst der Vorschlag von bords0 das Problem mit den Leerzeilen ebenfalls recht einfach
[url=http://www.proandkon.com]proandkon.com[/url]
Antworten