说我听了一句话,换了几句话。我从输入句子开始:
sentence = Wow, it felt so nice outside today!
然后我将其标记化并交换了一些单词。我剩下了一些新单词,例如:
['Hey', 'I', 'felt', 'somewhat', 'dreary', 'inside', 'today']
我想将此单词列表转换回原始格式,保留空格和特殊字符,并以如下字符串结尾:
Hey, I felt somewhat dreary inside today!
第一句话之间可以有任何类型的空格或特殊字符。有没有一种简单的算法可以做到这一点,希望不必逐个字符地遍历原始字符串?我正在使用Python。
请注意,重构的句子必须保留中间空格和标点符号,因此我不能仅使用join()函数。
答案 0 :(得分:0)
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))
答案 1 :(得分:0)
这就是我解决问题的方法:使用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)中有更复杂的方法可以做到这一点。但是我并不太经常这样做,并且此代码可读性强。所以对我有用!