Вы можете прочитать файл синонимов и преобразовать его в словарь, table
:
import re
table={}
with open('synonyms','r') as syn:
for line in syn:
match=re.match(r'(\w+)\s+=\s+(.+)',line)
if match:
primary,synonyms=match.groups()
synonyms=[synonym.lower() for synonym in synonyms.split()]
for synonym in synonyms:
table[synonym]=primary.lower()
print(table)
приводит к
{'word3_1': 'word3', 'word3_3': 'word3', 'word3_2': 'word3', 'contr': 'contracting', 'contract': 'contracting', 'contractor': 'contracting', 'contra': 'contracting', 'identify': 'identification', 'contractors': 'contracting', 'word3_n': 'word3', 'ID': 'identification'}
Далее вы можете прочитать в текстовом файле, изамените каждое слово его основным синонимом из table
:
with open('textfile','r') as f:
for line in f:
print(''.join(table.get(word.lower(),word)
for word in re.findall(r'(\W+|\w+)',line)))
выходов
identification identification identity contracting contracting contracting medicine medicine medicine
re.findall(r'(\w+|\W+)',line)
использовался разделенный каждый line
при сохранении пробела,Если пробел не представляет интереса, вы также можете использовать более простой line.split()
. table.get(word,word)
, возвращающий table[word]
, если слово в table
, и просто возвращающий word
, если word
нев синониме table
.