擅长:python、mysql、java
<p>如果你关心速度,仅仅手工制作字符串似乎要快一倍:</p>
<pre><code>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
</code></pre>
<p>而且<code>join</code>实际上是<a href="https://stackoverflow.com/a/26635939/2980246">faster when you hand it a list</a>,因此<code>' '.join(['newword' for _ in xrange(len(sentence.split()))])</code>应该会带来一些性能改进(它将结果缓存在非正式的<code>%timeit</code>测试中,所以我没有包含它)</p>