题目
创建一个疯狂填词的程序,它将读入文本文件,并让用户在该文本文件中出现ADJECTIVE\NOUN\ADVERB\VERB等单词的地方,加上它们自己的文本.
例如:
The ADJECTIVE panda walked to the NOUN and then VERB. A nearby NOUN was unaffected by these events.
程序将找到这些出现的单词,并提示用户取代它们,打印出来并输入新文件中.
Enter an adjective:
silly
Enter a noun:
chandelier
Enter a verb:
screamed
Enter a noun:
pickup truck
提示:小白文章,仅以参考为主,若有问题或建议欢迎提出.
代码
#! python3
# Mad libs.py - 给一段文本,通过输入替换
import re
#打开并读取文本
file = open('oldSentence.txt','rt')
source = file.read()
#使用正则表达式编译文本
pattern = re.compile(r'\b[A-Z][A-Z]+\b') #省略A为大写且单独的情况
WORD = pattern.findall(source) #findall方法返回一个列表WORD
print(WORD)
for word in WORD: #word遍历每个WORD大写字母
new_word = input('Enter an %s:\n'%word) #用户交互输入
source = re.sub(word,new_word,source) #替换并获取每一次修改后的文本
print(source) #打印新文本
file.close()
open('newSentence.txt','wt').write(source) #把新文本写入新txt文件
注意:词性单词不是只出现一次,可能会重复出现,所以做此题要注意源文本的通用,而不是题目给什么套什么.要做到把源文本换成什么,程序也可以执行替换!