У меня возникла проблема с созданием функции, которая использует словарь аббревиатур для текстовых сообщений и с помощью словаря для записи функций, которые переводятся на английский язык и с него. Например: "y r u l8?" переводит на "Почему вы опаздываете?" Так что у меня это до сих пор: (мне не нужна каждая текстовая фраза)
def text(string):
textDict={'y':'why', "l8":'late','u':'you','gtg':'got to go', 'lol': 'laugh out loud', 'ur': 'your',}
любая помощь приветствуется!
Если у вас есть словарь замен, вы можете сделать это:
replacements = {
'lol': 'laugh out loud',
'y': 'why',
'l8': 'late',
'u': 'you',
'r': 'are'
}
s1 = 'y r u l8'
s2 = ' '.join([replacements.get(w, w) for w in s1.split()])
str.split() разбивается на массив, array.join() присоединяет его обратно.
Это не будет работать, если в предложении есть пунктуация. Вам нужно будет обнаружить это и использовать слово без пунктуации в качестве ключа
Для чего-то более сложного попробуйте lookahead-lev. Я сделал это для аналогичной ситуации. Просто поместите свой "плейлист" в файл yaml и вызовите его. Он предназначен для веб-службы, но вы, вероятно, можете изменить его в соответствии с вашими потребностями.
Вы можете просто разделить текстовую строку и, если ее части находятся в textDict, и если они заменяют их содержимым словаря:
def translate(text_string, text_dict):
for word in text_string.split():
if word in text_dict:
text_string = text_string.replace(word, text_dict[word]
return text_string
s1.split()
наs1.split(' ')
приведет к тому, что он будет разбиваться только на пробелы, оставляя любые другие пробелы (новые строки и т. Д.) Без изменений. В противном случае, приведите более крупный пример входного текста. :)