python - 交换单词但保留两个字符串之间的其他字符
问题描述
假设我取了一个句子并换了一些单词。我从一个输入句子开始:
sentence = Wow, it felt so nice outside today!
然后我将它标记化并换掉了一些单词。我留下了一个新词列表,例如:
['Hey', 'I', 'felt', 'somewhat', 'dreary', 'inside', 'today']
我想将此单词列表转换回原始格式,保留空格和特殊字符,并以如下字符串结尾:
Hey, I felt somewhat dreary inside today!
第一个句子的单词之间可以有任何类型的空格或特殊字符。有没有一种简单的算法可以做到这一点,希望不用逐个字符地遍历原始字符串?我正在使用 Python。
请注意,重构的句子必须保留中间空格和标点符号,所以我不能只使用 join() 函数。
解决方案
这就是我解决问题的方法:使用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
N 次电话。这是最坏情况 O(N^2),在 O(N) 中有更复杂的方法可以做到这一点。但我不经常这样做,而且这段代码可读性很强。所以它对我有用!
推荐阅读
- go - 在 Go 中使用输入和输出通道
- c# - Datatable 如何在 groupby 之后使用 LINQ,然后通过某些条件选择复制到新的数据表?
- python - Python 中的一个衬垫需要用 if-else 替换 for 循环以更改数据帧中的值
- angular - 角 ngOnInit()
- django - 如何使用Django外循环的值访问内循环
- java - Mysql 与 Spring Boot 连接困难
- amazon-web-services - 从现有 Amazon Aurora 实例创建新的加密实例
- java - 加载资源失败:net::ERR_FILE_NOT_FOUND 但数据已加载
- plone - 克隆 FormGen 覆盖主题行
- three.js - 三个 JS Material 看当前 div 背后