Я написал несколько многословный сценарий, но он должен сделать свое дело:
sent = 'I go to the movies, I say "What do you want to see?"'
translated = []
quote_mode = False
for word in nltk.wordpunct_tokenize(sent):
if quote_mode:
translated.append(word)
if word == '"': quote_mode = False;
if not quote_mode:
translated.append(translate(word))
if word == '"': quote_mode = True;
result = ' '.join(translated)
print(result.capitalize()) # You go to the movies, you say "What do you want to see?"
В основном, когда строка входит в «режим цитаты», состояние сохраняется, а слова не переводятся. Когда строка выходит из кавычек, слова переводятся.
Ваше первоначальное решение также ставит пробелы между знаками остановки; это можно исправить с помощью:
result = result.replace(' "', '"')\
.replace(' .', '.')\
.replace(' ?', '?')\
.replace(' ,', ',')