2016-07-14 7 views
0

Ich habe eine große Datei (2 GB) mit Text, ich muss in jeder Zeile ersetzen (jede Zeile ist individuell), alle Teilstrings eines Tokens in der Zeile (an einer undefinierten Position) und identifiziert durch die Präfix KEYWORD_ID/mit dem Token und dem ursprünglichen Wort:Erweitert ersetzen

Beispiel:

This is an example of the KEYWORD_ID/Replace_Command that is given as an input, 
replace command should be replaced 

die Ausgabe sollte wie folgt aussehen:

This is an example of the KEYWORD_ID/Replace_Command that is given as an input, 
KEYWORD_ID/Replace_Command replace command should be replaced 

In einer Reihe viele KEYWORD_ID vorhanden sein könnte

Haben Sie eine Idee, wie Sie dies effizient durchführen können?

Danke für die Hilfe

+2

2GB ist nicht so groß, können Sie nicht nur lesen Sie die Datei Zeile für Zeile und verwenden '.replace()' oder 'regex'? –

+0

@Ares Ich habe keine Ideen Ich habe versucht, eine Lösung zu finden, aber ich stecken auf der Suche nach den Teilstrings stecken, ich weiß nicht, wie Replace_Command mit replace Befehl, ist jede Art von Regex, die mir erlauben, zu entsprechen passen diese 2 Saiten? –

+0

@MutationalMeltdown Das Problem ist nicht so sehr die Größe (ich kann es nur nicht mit Windows öffnen, nur ein paar Zeilen von Python gedruckt) Ist der Teil, den Sie in der Antwort auf Ares sehen –

Antwort

1

2GB ist gar nicht so groß, durchlaufen nur über Zeile für Zeile, und verwenden Sie regex

Bei ersetzen Befehl:

import re 

str = 'This is an example of the KEYWORD_ID/Replace_Command that is given as an input, replace command should be replaced' 

print(re.sub(r'\breplace\b', re.search('KEYWORD_ID/\w+',str).group(), str)) 

# returns: This is an example of the KEYWORD_ID/Replace_Command that is given as an input, KEYWORD_ID/Replace_Command command should be replaced 

Bei mehr, müssen Sie iterieren über die re.group