2016-12-21 1 views
0

Ich habe eine Textdatei mit vielen Zeilen darin und es gibt mehrere Instanzen der Phrase alpha und bravo, ID möchte alles zwischen diesen Phrasen extrahieren und es in eine Liste in einer neuen Textdatei einfügen. Zum Beispiel, sagen die source.txt DateiWie extrahiert man Text zwischen 2 eindeutigen Phrasen und fügt ihn mit python in eine geordnete Liste ein?

<ul class="_539vh _4j13h"><li class="_cx1ua"><div class="_6jvgy"> 
<div class="_9tu8m"><a class="_5lote _pfo25 _vbtk2" href="/dog/" style="width: 30px; height: 30px;"> 
<img class="_a012k" src=""></a> 
<div class="_mmgca"><div class="_gzjax"><a class="_4zhc5 notranslate _j7lfh" title="dog" href="/cat/">cat</a></div> 

In diesem Fall alpha lesen wäre href = „/ und bravo wäre /“ und ich würde die Liste wollen erzeugt so etwas wie

dog 
cat 
lesen

Wie könnte ich das tun, ich bin sehr neu in der Codierung.

Ein Code, den ich online gefunden und versucht, weit so ist

inFile = open("source.txt") 
outFile = open("List.txt", "w") 
buffer = [] 
keepCurrentSet = True 
for line in inFile: 
    buffer.append(line) 
    if line.startswith('href="/'): 
     #href="/ starts a new data set 
     if keepCurrentSet: 
      outFile.write("".join(buffer)) 
     #now reset our state 
     keepCurrentSet = False 
     buffer = [] 
    elif line.startswith('/"'): 
     keepCurrentSet = True 
inFile.close() 
outFile.close() 
+1

Was Sie bisher versucht haben:

würde ich Ihre Loop Anweisung wie folgt ändern? Bitte zeigen Sie Ihre Versuche und welche Probleme hatten Sie? – alecxe

+1

Es sieht so aus, als ob Sie möchten, dass wir einen Code für Sie schreiben. Während viele Benutzer bereit sind, Code für einen in Not geratenen Coder zu produzieren, helfen sie normalerweise nur, wenn das Poster bereits versucht hat, das Problem selbst zu lösen. Eine gute Möglichkeit, diesen Aufwand zu demonstrieren, besteht darin, den Code, den Sie bisher geschrieben haben, die Beispieleingabe (falls vorhanden), die erwartete Ausgabe und die Ausgabe, die Sie tatsächlich erhalten (Ausgabe, Rückverfolgung usw.), einzubeziehen. Je mehr Details Sie angeben, desto mehr Antworten erhalten Sie wahrscheinlich. Überprüfen Sie die [FAQ] (http://stackoverflow.com/tour) und [Wie zu fragen] (http://stackoverflow.com/questions/how-to-ask). – TigerhawkT3

+0

@ TigerhawkT3 Der Community-Bot muss eine Nachricht wie folgt posten: P. Warum automatisieren sie es nicht? Der Bot hat meine legitime Bearbeitung neulich abgelehnt. – MYGz

Antwort

0

Try this:

import re 

with open('old','r') as f1, open('new','w') as f2: 
    for line in f1: 
     for a in re.findall(r'(alpha)(.*?)(bravo)',line): 
      f2.write(a[1].strip()+'\n') 
+0

Ich habe das versucht, aber die neue Textdatei war auch leer – user3599811

+0

Fügen Sie die Textdatei in die Frage ein? Weil dies für den Text funktioniert, den Sie in der Frage angegeben haben. – MYGz

+0

Ich machte es klarer, nicht sicher, ob die Änderung den Code beeinflussen würde. – user3599811

0

Ich denke, Ihr Problem .startswith() verwendet - vielleicht keine Ihrer Linien (durch das Newline-Zeichen definiert) Beginnen Sie mit 'alpha'.

for line in inFile: 
    if 'alpha' in line: 
     line = line.replace('alpha', '') 
     line = line.replace('bravo', '') 
     outFile.write(line) 
Verwandte Themen