2017-02-01 3 views
0

Я пытаюсь использовать таблицу поиска, чтобы заменить значения в текстовом файлепитон регулярное выражение с переменной

Формат таблицы перекодировки, как

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

Я использую re.sub(Search, Replace, File)

I нужно сделать что-то вроде (r'\b Unit Of Measure\b', Replace, File) для каждой итерации.

Я не могу поместить эти теги в переменную.

Не могли бы вы помочь?

Ниже приведен код

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() 

Спасибо, Kowsik

+0

Не могли бы вы предоставить еще какой-нибудь код? – ppasler

+0

См. Http://stackoverflow.com/questions/3543559/python-regex-match-and-replace –

+0

Код был добавлен –

ответ

0

Я не уверен, что вы просите, но это может быть, что:

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

Я не спрашиваю, что Например. Рассмотрите приведенный ниже текст line1 .'a Единица измерения line2. BaseUnit измерения» мне нужно заменить только line1 и не выравнивают 2 Я знаю, для этого нужно использовать re.sub (г„\ Ъ единица измерения \ Ь“, Заменить файл) Но я получение строки поиска из переменной, которая поступает из другого файла. Мой вопрос заключается в том, какие изменения мне нужно сделать, чтобы переменная могла использоваться для поиска точного слова –

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' 

Может быть Мне здесь что-то не хватает, но если вы вложите шаблоны в кавычки, это, похоже, работает достаточно хорошо.

+0

, это происходит из файла, поэтому я не могу ничего редактировать, плюс я пытаюсь использовать точное соответствие, которое будет работать только с r ('\ bSearchString \ b'), я не могу добавить это в строку поиска, как это происходит из файла. –

Смежные вопросы