2017-02-01 4 views
0

Ich versuche, eine Lookup-Tabelle zu verwenden, um Werte in einer Textdatei istPython regulären Ausdruck Variable

Das Format der Lookup-Tabelle zu ersetzen, wie

Search    Replace 
Unit Of Measure Unit of Measure 
Bill Of Material Bill of Material 
Reference Item  Reference Material Number 

I re.sub(Search, Replace, File)

ich verwende muss für jede Iteration etwas wie (r'\b Unit Of Measure\b', Replace, File) tun.

Ich bin nicht in der Lage, diese Tags in eine Variable zu setzen.

Könnten Sie bitte helfen?

Unten ist der Code

import re 
f1 = open('C:\Scripts\FNR\SearchReplacekey.txt','r') 
f = open("C:\Scripts\FNR\log.txt",'a') 
f.seek(0) 
f.truncate() 
f.close() 
for line in f1: 
    fields = line.split('|') 
    a = fields[0] 
    Srch = fields[1] 
    Repl = fields[2] 
    f = open("C:\Scripts\FNR\Output.txt",'r') 
    filedata = f.read() 
    check = re.search(Srch,filedata) 
    f.close() 

    if check == -1: 

     f = open("C:\Scripts\FNR\log.txt",'a') 
     newdata = a + ' ' + Srch + ' ' + Repl 
     f.write(newdata + "\n") 
     f.close() 
    else: 

     # the problem is here I need to force Srch to match exact word 
     newdata = re.sub(Srch,Repl,filedata) 

     f = open("C:\Scripts\FNR\Output.txt",'w') 
     f.write(newdata) 
     f.close() 

Danke, Kowsik

+0

Können Sie etwas mehr Code zur Verfügung stellen? – ppasler

+0

Siehe http://stackoverflow.com/questions/3543559/python-regex-match-and-replace –

+0

Code wurde hinzugefügt –

Antwort

0

Ich bin nicht sicher, was Sie fragen, aber könnte es sein, dass:

searchs = ["Unit Of Measure", "Bill Of Material"] 
for s in searchs: 
    re.sub(s, Replace, File) 
+0

Ich frage nicht, dass Zum Beispiel. Betrachten Sie den folgenden Text line1 .'a Maßeinheit line2. Baseunit Of Measure‘ Ich brauche nur line1 zu ersetzen und nicht die Linie 2 ich dafür wissen wir brauchen re.sub verwenden (r '\ b Maßeinheit \ b', Ersetzen, File) Aber ich bin Abrufen der Suchzeichenfolge aus einer Variablen, die aus einer anderen Datei stammt. Meine Frage ist, welche Änderungen ich machen muss, so dass die Variable verwendet werden kann, um nach dem genauen Wort zu suchen –

0
>>>searchPattern = "Unit Of Measure" 
>>>replacePatter = "Unit of Measure" 
>>>sampleString = "not Unit Of measure, but Unit Of Measure and not Unit Of" 
>>>re.sub(searchPattern,replacePatter, sampleString) 
'not Unit Of measure, but Unit of Measure and not Unit Of' 

Vielleicht Mir fehlt hier etwas, aber wenn man die Muster in Anführungszeichen einfügt, scheint das gut genug zu funktionieren.

+0

das kommt aus einer Datei, so dass ich nicht in der Lage sein werde, alles zu bearbeiten, plus ich versuche, genaue Übereinstimmung zu verwenden, die funktioniert nur mit r ('\ bSearchString \ b'), ich kann das nicht zu der Suchzeichenfolge hinzufügen, da es aus einer Datei kommt. –

Verwandte Themen