<p>问题是在设置story1的值之前计算story1的长度。在</p>
<p>这里有一个固定版本,它也以一种更“pythonic”的方式迭代,并修复了连接原始字符串而不是拆分字符串的错误。在</p>
<pre><code>def replacement(story, listOfNouns):
story1 = story.split()
for i,word in enumerate(story1):
if word in listOfNouns:
story1[i] = '[NOUN]'
return ' '.join(story1)
print(replacement("Let's play marbles", ['marbles']))
</code></pre>
<p>输出:</p>
^{pr2}$
<p>这是另一种解决方案,它使用正则表达式一次高效地替换单词的所有实例,而不替换包含单词的部分单词。在</p>
<pre><code>import re
stories = [
'The quick brown fox jumped over the foxy lady.',
'Fox foxy fox lady ladies lady foxy fox']
def replacement(story, listOfNouns):
story = re.sub(r'''
(?ix) # ignore case, allow verbose regular expression definition
\b # word break
(?:{}) # non-capturing group, string to be inserted
\b # word break
'''.format('|'.join(listOfNouns)),'[NOUN]',story) # OR all words.
return story
for story in stories:
print(replacement(story,'fox lady'.split()))
</code></pre>
<p>输出:</p>
<pre><code>The quick brown [NOUN] jumped over the foxy [NOUN].
[NOUN] foxy [NOUN] [NOUN] ladies [NOUN] foxy [NOUN]
</code></pre>