Поиск при помощи словаря и "вытягивание" релевантного значения
Есть входное сообщение. Оно вариативно.
original_message = 'Ивану Петрову нравится ваше фото. Подробнее: https://site.com/photo/1a2b3c4d5c6d7e'
Есть словарь вида искомая фраза : замена
replacements = {
'нравится ваше фото. Подробнее: https://site.com/photo/' : r'Кому-то понравилась ваша фоточка. site.com/photo/\1',
'нравится ваш комментарий. Подробнее: https://site.com/comment/' : r'Кое-кто влепил лося вашему комменту. site.com/comment/\1',
'нравится ваше видео. Подробнее: https://site.com/video/' : r'Кто-то заценил ваш видос. site.com/video/\1'
}
Как можно реализовать перебор по словарю, чтобы в переменную modified_message подсасывалось значение релевантное ключу. К примеру:
original_message = 'Ивану Петрову нравится ваше фото. Подробнее: https://site.com/photo/1a2b3c4d5c6d7e'
modified_message = 'Кому-то понравилась ваша фоточка. site.com/photo/1a2b3c4d5c6d7e'
или
original_message = 'Кларе Шац нравится ваше видео. Подробнее: https://site.com/video/fgr34534rf324'
modified_message = 'Кто-то заценил ваш видос. site.com/video/fgr34534rf324'
Ответы (2 шт):
Автор решения: Denis640Kb
→ Ссылка
import re
original_message = 'Ивану Петрову нравится ваше видео. Подробнее: https://site.com/video/1a2b3c4d5c6d7e'
modified_message = ''
replacements = {
'нравится ваше фото. Подробнее: https://site.com/photo/' : r'Кому-то понравилась ваша фоточка. site.com/photo/\1',
'нравится ваш комментарий. Подробнее: https://site.com/comment/' : r'Кое-кто влепил лося вашему комменту. site.com/comment/\1',
'нравится ваше видео. Подробнее: https://site.com/video/' : r'Кто-то заценил ваш видос. site.com/video/\1'
}
for z in replacements:
zk = re.findall(z, original_message)
if zk != []:
original_message = replacements[z]
print(original_message)
Автор решения: Alex
→ Ссылка
Без всяких модулей реализация именно такая (Можно вариировать):
original_message_photo = 'Ивану Петрову нравится ваше фото. Подробнее: https://site.com/photo/1a2b3c4d5c6d7e'
replacements = {
'нравится ваше фото. Подробнее: https://site.com/photo/' : r'Кому-то понравилась ваша фоточка. site.com/photo/\1',
'нравится ваш комментарий. Подробнее: https://site.com/comment/' : r'Кое-кто влепил лося вашему комменту. site.com/comment/\1',
'нравится ваше видео. Подробнее: https://site.com/video/' : r'Кто-то заценил ваш видос. site.com/video/\1'
}
#original_message = 'Ивану Петрову нравится ваше фото. Подробнее: https://site.com/photo/1a2b3c4d5c6d7e'
#modified_message = 'Кому-то понравилась ваша фоточка. site.com/photo/1a2b3c4d5c6d7e'
#
original_message_video = 'Кларе Шац нравится ваше видео. Подробнее: https://site.com/video/fgr34534rf324'
#modified_message = 'Кто-то заценил ваш видос. site.com/video/fgr34534rf324'
original_message_comment = 'Бате Васьки нравится ваше видео. Подробней по ссылочке'
def check(sentence: str) -> str:
lst = sentence.split()
print('Работаем с списком слов: ', lst, '\n') # можно закомментировать эту строчку
if lst[2][0:4] == 'нрав' and lst[3][0:3] == 'ваш' and lst[4][0:4] == 'фото':
sentence = replacements['нравится ваше фото. Подробнее: https://site.com/photo/']
return sentence
elif lst[2][0:4] == 'нрав' and lst[3][0:3] == 'ваш' and lst[4][0:7] == 'коммент':
sentence = replacements['нравится ваш комментарий. Подробнее: https://site.com/comment/']
return sentence
elif lst[2][0:4] == 'нрав' and lst[3][0:3] == 'ваш' and lst[4][0:5] == 'видео':
sentence = replacements['нравится ваше видео. Подробнее: https://site.com/video/']
return sentence
else:
return 'либо у вас нет имени, либо ввели вообще что-то другое'
print(check(original_message_photo), '\n')
print(check(original_message_video), '\n')
print(check(original_message_comment), '\n')
print(check('Текст состоит из тотальной ерунды! DA DA YA'))
Вывод:
$ python a.py
Работаем с списком слов: ['Ивану', 'Петрову', 'нравится', 'ваше', 'фото.', 'Подробнее:', 'https://site.com/photo/1a2b3c4d5c6d7e']
Кому-то понравилась ваша фоточка. site.com/photo/\1
Работаем с списком слов: ['Кларе', 'Шац', 'нравится', 'ваше', 'видео.', 'Подробнее:', 'https://site.com/video/fgr34534rf324']
Кто-то заценил ваш видос. site.com/video/\1
Работаем с списком слов: ['Бате', 'Васьки', 'нравится', 'ваше', 'видео.', 'Подробней', 'по', 'ссылочке']
Кто-то заценил ваш видос. site.com/video/\1
Работаем с списком слов: ['Текст', 'состоит', 'из', 'тотальной', 'ерунды!', 'DA', 'DA', 'YA']
либо у вас нет имени, либо ввели вообще что-то другое