首页 > 解决方案 > 交换单词但保留两个字符串之间的其他字符

问题描述

假设我取了一个句子并换了一些单词。我从一个输入句子开始:

sentence = Wow, it felt so nice outside today!

然后我将它标记化并换掉了一些单词。我留下了一个新词列表,例如:

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

我想将此单词列表转换回原始格式,保留空格和特殊字符,并以如下字符串结尾:

Hey, I felt somewhat dreary inside today!

第一个句子的单词之间可以有任何类型的空格或特殊字符。有没有一种简单的算法可以做到这一点,希望不用逐个字符地遍历原始字符串?我正在使用 Python。

请注意,重构的句子必须保留中间空格和标点符号,所以我不能只使用 join() 函数。

标签: pythonstringnlp

解决方案


这就是我解决问题的方法:使用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

可能不是最有效的方式,因为我打了replaceN 次电话。这是最坏情况 O(N^2),在 O(N) 中有更复杂的方法可以做到这一点。但我不经常这样做,而且这段代码可读性很强。所以它对我有用!


推荐阅读