2017-02-03 2 views
0

Hier ist eine Beschreibung von dem, was ich tun möchte: Ich habe 2 csv-Dateien. Ich möchte die gleiche Sache (lass es "hugo" nennen) in meinen 2 Dateien gleichzeitig suchen. Die Sache ist, dass es nur einen und nicht den anderen druckt.Mein Skript läuft nur durch 1 "if" auf 2

Hier ist mein Code:

try: 
    while True: 
     if pm10pl[j][2] == '"Victor Hugo"': 
      victor1 = pm10pl[j] 
      print victor1 

     if pm25pl[t][2] == '"Victor Hugo"': 
      victor2= pm25pl[t] 
      print victor2 

     j=j+1 
     t=t+1 
except IndexError: 
    pass 

ich verschiedene Dinge wie Elif versucht haben, statt, wenn ersetzen t durch j, um 2 Funktionen übergeben. Jedes funktioniert perfekt, wenn das andere nicht hier ist, und wenn ich die 2 von ihnen invertiere, ist das das gleiche, das auch als pm25p gedruckt wird.

Kann nichts tun.

(hier ist nur der Teil meines Code, das Interesse hat, Eröffnung der Datei etc funktioniert gut, die ‚",‘normal hugo in meiner Datei als erscheinen„hugo“(mit Anführungszeichen))

Plus, ich kann Victor1 und Victor2 nicht außerhalb der if aufrufen.

Haben Sie eine Idee was los ist?

+2

sind Ihre Dateien gleich lang? – bouletta

+0

Wenn Sie so eine Schleife machen (eine Endlosschleife in einem 'try' ?!), stoppt Ihre Schleife, wenn die kürzeste Datei keine Zeilen mehr hat. Das ist wahrscheinlich nicht das, was du willst. –

+0

für jeden csv: suche nach X, drucke X – user1612272

Antwort

0

eine Liste Verständnis für jede CSV-Datei Sie: mit itertool ‚s zip Funktion

[pm10pl[i] for i in range(0,len(pm10pl)) if 'Victor Hugo' in pm10pl[i][2]] 
[pm25pl[i] for i in range(0,len(pm25pl)) if 'Victor Hugo' in pm25pl[i][2]] 
+0

Hier ist der Fehler es werfen: AttributeError: 'str' Objekt hat kein Attribut 'str' – Hawkydoky

+0

@Hawkydoky Versuchen Sie es so. Bearbeitet –

+0

Es wirft mir eine ungültige Syntax auf "in" ... – Hawkydoky

2

Sie können gleichzeitig durch zwei Listen laufen.

import itertools 

l = [] 
for victor1, victor2 in itertools.izip_longest(pm10pl, pm25pl): 
    if victor1 and victor1[2] == '"Victor Hugo"': 
     #print victor1 
     if victor2 and victor2[2] == '"Victor Hugo"': 
      #print victor2 
      l.append((victor1, victor2)) # add the pair to list. 

for i in l: # prints all pairs. 
    print i 
+1

Ich werde es nach versuchen, ich muss jetzt gehen, kam ich zurück, wenn irgendein Problem oder wenn es gut ist, Danke für die Antwort sowieso :) – Hawkydoky

+0

Es sieht so aus als ob es funktioniert aber ... Es hört nie auf. Hat eine Pause hinzuzufügen, um es zu stoppen :) Aber wenn jetzt ich sie in einer Variablen aufnehmen möge wie: smth = [victor1] [Victor2] Wie kann ich das tun? Ich bin selbstlernend in Python so ... Entschuldigung, wenn ich einfache Frage habe:/ – Hawkydoky

+0

hört nie auf? Was ist die Größe und Art von pm10pl und pm25pl? Ist es eine Liste? –