Меняйте слова, но сохраняйте другие символы между двумя строками - PullRequest
1 голос
/ 12 июня 2019

Скажем, я взял предложение и поменял несколько слов.Я начал с входного предложения:

sentence = Wow, it felt so nice outside today!

Затем я разложил его по токенам и обменял несколько слов.У меня остался список новых слов, например:

['Hey', 'I', 'felt', 'somewhat', 'dreary', 'inside', 'today']

Я хочу преобразовать этот список слов обратно в исходный формат, сохраняя пробелы и специальные символы, ив итоге получится строка типа:

Hey, I felt somewhat dreary inside today!

В первом предложении может быть любой тип пробела или специальных символов между словами.Есть ли простой способ сделать это алгоритмически, надеюсь, без перебора исходной строки символ за символом?Я использую Python.

Обратите внимание, что восстановленное предложение должно сохранять промежуточный пробел и пунктуацию, поэтому я не могу просто использовать функцию join ().

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Вот как я решил проблему: используя replace.

for input_word, new_word in zip(input_words, new_words):
   raw_sentence = raw_sentence.replace(input_word, new_word, 1)
return raw_sentence

Добавляя параметр 1, вы указываете замену input_word только в первый раз, когда это происходит в raw_sentence.

Вероятно, не самый эффективный способ, так как язвоню replace Н раз.Это наихудший случай O (N ^ 2), и есть более сложный способ сделать это в O (N).Но я делаю это не слишком часто, и этот код вполне читабелен.Так у меня работает!

0 голосов
/ 12 июня 2019
import re
sentence = "Wow, it felt so nice outside today!"
new_word=re.findall(r"[\w']+|[.,!?; ]",sentence)

Сделайте замену при заказе.

 new_words=['Hey', ',', ' ', 'I', ' ', 'felt', ' ', 'somewhat', ' ', 'dreary', ' ', 'inside', ' ', 'today', '!']

Если вы отсортировали этот заказ, то после этого вы можете его использовать.

 print("".join(new_words))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...