Comparing two files

Code-Stücke können hier veröffentlicht werden.
Antworten
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Hi all
Ich stehe immer wieder vor der Aufgabe, bestimmte Kolonnen in zwei Dateinen zu vergleichen. Bis jetzt habe ich das immer, m.A.n, reichlich unbeholfen erledigt:

Code: Alles auswählen

#!/usr/bin/env python

import os, sys 

file1 = open(sys.argv[1])
file2 = open(sys.argv[2])

data1 = file1.readlines()
data2 = file2.readlines()

for i in range(len(data1)): 
    if data1[i].split()[0] == data2[i].split()[0]:
        print data1[i].split()[0][0], '==', data2[i].split()[0][0]
    else:
        print i, "NOT THE SAME"                                                                                                                      
Was ich mich immer wieder gefragt habe, ich kann ja nicht über die Linien iterieren, ohne einen Index zu bemühen:

Code: Alles auswählen

for line in data1:
etc.
weil wie kann ich dann auf dieselbe Linie in data2 zugreifen, ich kenne ja die Liniennummer in der ich mich befinde nicht.

Vielen Dank für Hinweise
Zuletzt geändert von Anonymous am Dienstag 11. Mai 2010, 12:11, insgesamt 2-mal geändert.
Grund: Tippfehler in Betreff beseitigt und Highlighting aktiviert.
[url=http://www.proandkon.com]proandkon.com[/url]
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Schnellschuss: vielleicht ist difflib etwas für dich?
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Oder `izip` >> http://docs.python.org/library/itertool ... tools.izip

Damit kannst du über beide Dateien gleichzeitig iterieren.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
BlackJack

@mzh: In den Dateien sind *Zeilen* und keine "Linien". Das ist eine furchtbar falsche Übersetzung von "line" in diesem Kontext.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Außerdem gehört das imho doch nicht hier rein. In letzter Zeit häufen sich solche Postings hier irgend wie, oder?
http://python-forum.de/viewtopic.php?f=11&t=22841

Das sind doch weniger Dinge, die man zeigen will, als vielmehr Fragen, wie etwas umzusetzen ist. Also imho alles Threads für die Allgemeinen Fragen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Hyperion hat geschrieben:Außerdem gehört das imho doch nicht hier rein. In letzter Zeit häufen sich solche Postings hier irgend wie, oder?
http://python-forum.de/viewtopic.php?f=11&t=22841

Das sind doch weniger Dinge, die man zeigen will, als vielmehr Fragen, wie etwas umzusetzen ist. Also imho alles Threads für die Allgemeinen Fragen.
kein problem für mich
[url=http://www.proandkon.com]proandkon.com[/url]
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

ms4py hat geschrieben:Oder `izip` >> http://docs.python.org/library/itertool ... tools.izip

Damit kannst du über beide Dateien gleichzeitig iterieren.
Vermutlich will man aber izip_longest: http://docs.python.org/library/itertool ... ip_longest
Antworten