首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在两个字符串之间交换单词但保留其他字符

在两个字符串之间交换单词但保留其他字符
EN

Stack Overflow用户
提问于 2019-06-13 02:16:39
回答 2查看 69关注 0票数 1

假设我拿了一句话,换掉了一些单词。我从一个输入句子开始:

sentence = Wow, it felt so nice outside today!

然后我对它进行了标记化,并交换了一些单词。我得到了一个新单词的列表,比如:

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

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

Hey, I felt somewhat dreary inside today!

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

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

EN

回答 2

Stack Overflow用户

发布于 2019-06-13 03:42:58

代码语言:javascript
复制
import re
sentence = "Wow, it felt so nice outside today!"
new_word=re.findall(r"[\w']+|[.,!?; ]",sentence)

请根据订单进行更换。

代码语言:javascript
复制
 new_words=['Hey', ',', ' ', 'I', ' ', 'felt', ' ', 'somewhat', ' ', 'dreary', ' ', 'inside', ' ', 'today', '!']

如果你已经对这个顺序进行了排序,然后你就可以使用它了。

代码语言:javascript
复制
 print("".join(new_words))
票数 0
EN

Stack Overflow用户

发布于 2019-06-26 05:28:13

这就是我解决这个问题的方法:使用replace

代码语言:javascript
复制
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中时替换它。

可能不是最有效的方法,因为我调用了N次replace。这是最坏的情况O(N^2),在O(N)中有一种更复杂的方法。但是我并不经常这样做,而且这段代码非常易读。所以它对我来说很有效!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56568163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档