Ich habe ein Python-Skript geschrieben, wo ich versuche, einige Textdateien zu filtern und sie mit einer anderen Textdatei zu vergleichen, aber ich habe Mühe, eine Lösung zu finden.Filtern nach Werten in Textliste in Python
below | 1
above | 2
above | 3
above | 4
above | 5
below | 6
below | 7
below | 8
below | 9
below | 10
below | 11
below | 12
above | 13
below | 14
below | 15
below | 16
below | 17
below | 18
below | 19
below | 20
below | 21
...
Ich habe diese Datei Video-Frames Auflistung und ob sie über oder unter einem definierten Schwellenwert sind.
Zusätzlich habe ich eine Liste dieser 'oben' Schwellwertrahmen und einen benutzerdefinierten Wert markiert (entweder x, y oder z) zu jedem. Leider stimmen die Nummern in dieser Liste nicht mit der ursprünglichen Ober- oder Unterrahmennummer überein, sondern sind nur eine nummerierte Liste.
y | 1
x | 2
x | 3
y | 4
z | 5
z | 6
y | 7
z | 8
y | 9
y | 10
x | 11
x | 12
y | 13
x | 14
x | 15
x | 16
x | 17
x | 18
y | 19
x | 20
z | 21
Ich mag diese beide kombinieren, so dass die x, y oder z Werte des oben genannten Rahmen, die den ‚oben‘ Tag im anderen Skript ersetzen, wie folgt aus:
below | 1
y | 2
x | 3
x | 4
y | 5
below | 6
below | 7
below | 8
below | 9
below | 10
below | 11
below | 12
z | 13
below | 14
below | 15
below | 16
below | 17
below | 18
below | 19
below | 20
below | 21
aber ich kann Ich verstehe nicht, wie man die Liste durchläuft, um dies zu erreichen. Sollte ich Werte in einem Wörterbuch speichern und über diese hinausgehen? Jede Hilfe würde sehr geschätzt werden. Ich habe versucht, einige für Schleifen und mit offenen Aussagen verwenden, es zu versuchen, aber ich kann meinen Kopf nicht umgehen, wie durch sie durchlaufen:
with open((selectedvideostring + 'combinedfiles.txt'), 'w') as combinedfile:
with open((selectedvideostring + 'aboveorbelow.txt'), 'r') as aboveorbelowfile:
for line in aboveorbelowfile:
if 'above' in line:
with open((selectedvideostring + 'xyzfile.txt'), 'r') as xyzfile:
for line in xyzfile:
if 'x' in line:
combinedfile.write("x" + '|' + str(int(cap.get(1))))
elif 'y' in line:
combinedfile.write("y" + '|' + str(int(cap.get(1))))
if 'z' in line:
combinedfile.write("z" + '|' + str(int(cap.get(1))))
elif 'below' in line:
combinedfile.write("below" + '|' + str(int(cap.get(1))))
Dank!
was haben Sie versucht schon? – Netwave
Bitte fügen Sie den _content_ dieser Dateien in Ihre Frage ein, damit wir nicht alles neu eintippen müssen, um eine mögliche Lösung zu testen. –
Werde das jetzt tun, Entschuldigung! – KittenMittons