有没有办法使用String replace()方法来替换任何东西

时间:2016-04-28 16:50:00

标签: python string python-2.7 python-3.x methods

这样的东西

sentence.replace(*, "newword")

(这不起作用,顺便说一句)

让我们说

sentence = "hello world" return sentence.replace(*, "newworld")

应该返回" newword newword"

3 个答案:

答案 0 :(得分:5)

由于您不会替换特定单词,str.replace()不会真正支持任何类型的模式匹配。

但是,你可以使用re.sub()函数,它允许你传入一个匹配所有内容的正则表达式并替换它:

import re
# Replace each series of non-space characters [^\s]+ with "newword"
sentence = re.sub('[^\s]+','newword',sentence)

示例

您可以找到complete interactive example of this here并在下面演示:

enter image description here

答案 1 :(得分:0)

你要找的是一个单词替换。因此,不是替换字符的string.replace,而是需要替换所有单词的东西。

>>> sentence = "hello world this is my sentence"
>>> " ".join(["newword"] * len(sentence.split()))
'newword newword newword newword newword newword'

在上述情况下,我们将句子吐入一个单词列表,并简单地制作另一个单词列表" newword"长度相同。最后,我们与"一起加入新词。 "他们之间的性格

答案 2 :(得分:0)

如果您关心速度,只需手动制作字符串的速度似乎快两倍:

In [8]: import re

In [9]: sentence = "hello world this is my sentence"

In [10]: nonspace = re.compile('[^\s]+')

In [11]: %timeit re.sub(nonspace, 'newword', sentence)
100000 loops, best of 3: 6.28 µs per loop

In [12]: %timeit ' '.join('newword' for _ in xrange(len(sentence.split())))
100000 loops, best of 3: 2.52 µs per loop

In [13]: sentence *= 40  # Make the sentence longer

In [14]: %timeit re.sub(nonspace, 'newword', sentence)
10000 loops, best of 3: 70.6 µs per loop

In [15]: %timeit ' '.join('newword' for _ in xrange(len(sentence.split())))
10000 loops, best of 3: 30.2 µs per loop

join实际上是faster when you hand it a list,因此' '.join(['newword' for _ in xrange(len(sentence.split()))])应该会带来一些性能提升(它会将结果缓存到我的非正式%timeit测试中,所以我没有包含它)