<p>诀窍是在<code>re.sub</code>中使用一个函数来代替替换字符串。这是一个粗糙的方法。在</p>
<pre><code>import re
sentence = 'The ADJECTIVE panda walked to the NOUN and then VERB. A nearby NOUN was unaffected by these events.'
def consider(matchobj):
content = matchobj.group()
if content in ['NOUN', 'ADJECTIVE', 'ADVERB', 'VERB']:
return input('Please enter ' + content)
else:
return content
print (re.sub('[A-Z]+', consider, sentence))
</code></pre>
<p>我没有费心用你的话,只是当时我脑子里出现的任何东西。这是它在使用中的样子。在</p>
^{pr2}$
<p><strong>编辑:根据评论添加。</strong></p>
<pre><code>import re
partsOfSpeech = ['NOUN', 'ADJECTIVE', 'ADVERB', 'VERB']
replacements = {_:'' for _ in partsOfSpeech}
for r in replacements:
replacements[r] = input('Please enter ' + r.lower() + ': ')
madLibs = [
'The ADJECTIVE panda walked to the NOUN and then VERB. A nearby NOUN was unaffected by these events.',
'A NOUN ADVERB decided to VERB the NOUN'
]
def consider(matchobj):
content = matchobj.group()
if content in partsOfSpeech:
return replacements[content]
else:
return content
for madLib in madLibs:
print (re.sub('[A-Z]+', consider, madLib))
</code></pre>
<p>结果:</p>
<pre><code>Please enter adjective: vast
Please enter adverb: smoothly
Please enter verb: went
Please enter noun: bear
The vast panda walked to the bear and then went. A nearby bear was unaffected by these events.
A bear smoothly decided to went the bear
</code></pre>