У меня есть плоский файл с терминами и предложениями. Если в предложении найдется какой-либо термин, мне нужно добавить его идентификатор к термину (term | id). Сопоставление с образцом должно быть без учета регистра. Также нам нужно сохранить тот же случай, что и в предложении. Можно ли обратиться к словарю, чтобы получить значение, используя его ключ в вызове замены?
from pandas import DataFrame
import re
df = {'id':[11,12,13,14,15,16],
'term': ['Ford', 'EXpensive', 'TOYOTA', 'Mercedes Benz', 'electric', 'cars'],
'sentence': ['F-FORD FORD/FORD is less expensive than Mercedes Benz.' ,'toyota, hyundai mileage is good compared to ford','tesla is an electric-car','toyota too has electric cars','CARS','CArs are expensive.']
}
#Dataframe creation
df = DataFrame(df,columns= ['id','term','sentence'])
#Dictionary creation
dict = {}
l_term = list(df['term'])
l_id = list(df['id'])
for i,j in zip(l_term,l_id):
dict[str(i)] = j
#Building patterns to replace
pattern = r'(?i)(?<!-)(?<!\w)(?:{})(?!\w)'.format('|'.join(map(re.escape, sorted(df["term"],key=len,reverse=True))))
#Replace
df["sentence"].replace(pattern, r"\g<0>|present",, inplace=True,regex=True)
Вместо | настоящего мне нужно сослаться на словарь как | dict.get (\ g <0>)или есть другой подход для достижения этой цели? Также, если мы нашли автомобили дважды за 16,17. Мы можем добавить любой из них.
Ожидаемый результат -
F-FORD FORD|11/FORD|11 is less expensive|12 than Mercedes Benz|14.
toyota|13, hyundai mileage is good compared to ford|11
tesla is an electric|15-car
toyota|13 too has electric|15 cars|16
CARS|16
CArs|16 are expensive|12.