假设我拿了一句话,换掉了一些单词。我从一个输入句子开始:
sentence = Wow, it felt so nice outside today!
然后我对它进行了标记化,并交换了一些单词。我得到了一个新单词的列表,比如:
['Hey', 'I', 'felt', 'somewhat', 'dreary', 'inside', 'today']
我想将这个单词列表转换回原始格式,保留空格和特殊字符,并以如下形式的字符串结束:
Hey, I felt somewhat dreary inside today!
第一个句子可以包含任何类型的空格或单词之间的特殊字符。有没有一种简单的方法可以在算法上做到这一点,希望不用逐个字符地迭代原始字符串?我使用的是Python。
注意,重构的句子必须保留中间的空格和标点符号,所以我不能只使用join()函数。
发布于 2019-06-13 03:42:58
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))
发布于 2019-06-26 05:28:13
这就是我解决这个问题的方法:使用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
中时替换它。
可能不是最有效的方法,因为我调用了N次replace
。这是最坏的情况O(N^2),在O(N)中有一种更复杂的方法。但是我并不经常这样做,而且这段代码非常易读。所以它对我来说很有效!
https://stackoverflow.com/questions/56568163
复制相似问题