2016-07-01 5 views
0

Ich schreibe gerade ein kleines Python-Programm zum Manipulieren von Textdateien. (Ich bin ein newb Programmierer)Python-Variable m.start() von re.finditer wird nicht überschrieben

Zuerst verwende ich re.finditer, um eine bestimmte Zeichenfolge in lines1 zu finden. Dann schreibe ich das in eine Datei und schließe sie. Als nächstes möchte ich die erste Zeile greifen und in einer anderen Textdatei danach suchen. Das erste Mal mit re.finditer funktionierte es großartig.

Das Problem ist: m.start() gibt immer den letzten Wert des ersten m.Start zurück. Es wird nicht überschrieben, da es das erste Mal mit re.finditer war.

Können Sie mir helfen, warum zu verstehen?

mein Code:

for m in re.finditer(finder1,lines1): 
    end_of_line = lines1.find('\n',m.start()) 
    #print(m.start()) 
    found_tag = lines1[m.start()+lenfinder1:end_of_line] 
    writefile.write(found_tag+'\n') 
    lenfinder2 = len(found_tag) 


input_file3 = open ('out.txt') 
writefile.close() 
num_of_lines3 = file_len('out.txt') 

n=1 
while (n < num_of_lines3): 
    line = linecache.getline('out.txt', n) 
    n = n+1 
    re.finditer(line,lines2) 
    #print(m.start()) 

Antwort

0

Sie nicht deklariert haben \ initialisiert line, die Sie hier verwenden sind:

re.finditer(line,lines2) 

So ändern:

linecache.getline('out.txt', n) 

zu

line = linecache.getline('out.txt', n) 
+0

Sorry, ich habe versehentlich "line =" gelöscht :(Es ist in meinem Code, aber m.start funktioniert nicht. – eckhart

+0

ok lass mich nochmal überprüfen dann –

+0

bekommst du korrekte Ausgabe beim Ausdruck 'line'? –

Verwandte Themen