2016-12-21 2 views
1

Ive получил этот код из replacing text in a file with Pythonзамещающие строки в файл из другого текстового файла с Python

import re 
repldict = {'zero':'0', 'one':'1' ,'temp':'bob','garage':'nothing'} 
def replfunc(match): 
    return repldict[match.group(0)] 

regex = re.compile('|'.join(re.escape(x) for x in repldict)) 
with open('file.txt') as fin, open('fout.txt','w') as fout: 
    for line in fin: 
     fout.write(regex.sub(replfunc,line)) 

, но я не могу загрузить repldict из другого текстового файла. я попытался с

repldict={line.strip() for line in open(syspath+'/rules.txt', 'r')} 

Но это не работает.

+0

Как данные расположены в файле ? –

+1

Похоже, вы пытаетесь создать словарь через понимание словаря? 'repldict = {line.strip() для строки в open (syspath + '/ rules.txt', 'r')}'. Это не имеет пары ключей, значений, которые я могу видеть. Догадка: вам нужно загрузить файл, разделить каждую строку на разделитель (например, запятую, пробел), а затем использовать индексирование, чтобы определить, какое слово является ключом, и какое слово является значением, которое должно использоваться в качестве замены для слово, которое вы определили как ключ. – roganjosh

ответ

3

Если файл словаря имеет следующий простой формат:

zero 0 
one 1 
temp bob 
garage nothing 

Вы может создать ваш словарь, используя split (не strip, split без параметров имеет встроенный strip особенность как-то) в понимании генератора, который дает наборам (ключ, значение), переданную dict:

repldict=dict(line.split() for line in open(os.path.join(syspath,"rules.txt"), 'r')) 

результат:

{'temp': 'bob', 'one': '1', 'garage': 'nothing', 'zero': '0'} 
1

Учитывая, что ваш файл 'Rules.txt' выглядит следующим образом:

zero:0 
one:1 
temp:bob 
garage:nothing 

затем:

with open(syspath+'/rules.txt', 'r') as rules: 
    repldict={} 
    for line in rules: 
     key, value = line.strip().split(':') 
     repldict[key] = value 
Смежные вопросы