Python-функция преобразования текста на английский язык?

1

У меня возникла проблема с созданием функции, которая использует словарь аббревиатур для текстовых сообщений и с помощью словаря для записи функций, которые переводятся на английский язык и с него. Например: "y r u l8?" переводит на "Почему вы опаздываете?" Так что у меня это до сих пор: (мне не нужна каждая текстовая фраза)

def text(string):  
    textDict={'y':'why', "l8":'late','u':'you','gtg':'got to go', 'lol': 'laugh out loud', 'ur': 'your',}

любая помощь приветствуется!

Теги:
dictionary

4 ответа

6

Если у вас есть словарь замен, вы можете сделать это:

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()])
  • 0
    Thnks! я понял что-то похожее, однако, ответ выходит без пробелов. как бы добавить интервал в ответ?
  • 0
    @ snwflke00 - Можете ли вы объяснить, что вы подразумеваете под интервалом? Вы имеете в виду разрывы строк / дополнительные пробелы? В этом случае изменение s1.split() на s1.split(' ') приведет к тому, что он будет разбиваться только на пробелы, оставляя любые другие пробелы (новые строки и т. Д.) Без изменений. В противном случае, приведите более крупный пример входного текста. :)
Показать ещё 3 комментария
1
  • Строка
  • должна быть разделена на слова
  • затем прокрутите каждое слово и замените его на словарь в словаре, если найдено
  • Затем восстановите новую строку из слов и верните ее.

str.split() разбивается на массив, array.join() присоединяет его обратно.

Это не будет работать, если в предложении есть пунктуация. Вам нужно будет обнаружить это и использовать слово без пунктуации в качестве ключа

  • 0
    Код @ gddc лучше, чем у меня - просто посмотрите на это.
0

Для чего-то более сложного попробуйте lookahead-lev. Я сделал это для аналогичной ситуации. Просто поместите свой "плейлист" в файл yaml и вызовите его. Он предназначен для веб-службы, но вы, вероятно, можете изменить его в соответствии с вашими потребностями.

0

Вы можете просто разделить текстовую строку и, если ее части находятся в 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
  • 3
    Это найдет слова внутри слов. Например, «игрушка» станет «тощий»
  • 0
    Не принял это во внимание, мой плохой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню