2016-07-06 11 views
0

Ich habe unter diesen Code unter Verwendung von genauen Übereinstimmungen von Strings von einem csv zum anderen zu finden:Suche Zeile in einer CSV in einem anderen csv

with open(filename1, 'rb') as file1: 
file1reader = csv.reader(file1) 

for line1 in file1reader: 
    with open(filename2, 'rb') as file2: 
     file2reader = csv.reader(file2) 

     for linenum, line2 in enumerate(file2reader, start=1): 
      if str(line1) == str(line2): 
       print('match found') 
       matches.append(str(linenum)) 
       counts.append(linenum) 
       if len(matches) >= MAX_COUNT: 
        break 

    if len(matches) >= MAX_COUNT: 
     break 

Jetzt habe ich eine Datei, die Saiten hat, die teilweise Übereinstimmungen sind zu einer anderen Datei. Ich würde auch gerne eine Übereinstimmung haben, da die genauen Strings im obigen Code sind. Ich habe versucht, die == durch in zu ersetzen, hatte aber kein Glück. Irgendeine Hilfe?

Beispiel:

string1 = humpty 

string2 = humptydumpty 

Antwort

1

Probieren Sie beide Richtungen Überprüfung:

if (str(line1) in str(line2)) or (str(line2) in str(line1)): 

I glaube nicht, dass die Klammern unbedingt notwendig sind, aber sie machen die Bedeutung klarer.

+0

Versucht dies aber immer noch kein Glück. Das Skript scheint keine Übereinstimmung zu finden, obwohl ich sicher bin, dass Teilstrings in der ersten Liste vorhanden sind, die in der zweiten Liste in der Zeichenfolge enthalten sind. – Labrat

+0

Ich denke, es macht dies, weil es Listenobjekte vergleicht und somit string1 = ['humpty'] und string2 = ['humptydumpty'] – Labrat

+0

Wenn das der Fall ist, dann 'if str (string1 [0]) in str (string2 [0]) 'würde funktionieren .. vorausgesetzt, sie sind One-Item-Listen – Jon

0

Sie versuchen zu check if a substring is present in a string.

Dazu können Sie den in Operator:

Beispiel:

if "humpty" in "humptydumpty": 
    print "Ok" 

In Ihrem Fall:

if string1 in string2: 
    print "Ok"