#! python # coding: utf-8 ##创建一个疯狂填词(Mad Libs)程序,它将读入文本文件,并让用户在该文本文件中出现ADJECTIVE、NOUN、ADVERB 或VERB 等单词的地方,加上他们自 #己的文本。例如,一个文本文件可能看起来像这样: # The ADJECTIVE panda walked to the NOUN and then VERB. A nearby NOUN wasunaffected by these events. #程序将找到这些出现的单词,并提示用户取代它们。 #Enter an adjective: #silly #Enter a noun: #chandelier #Enter a verb: #screamed #Enter a noun: #pickup truck #以下的文本文件将被创建: #The silly panda walked to the chandelier and then screamed. A nearby pickup truck was unaffected by these events. #结果应该打印到屏幕上,并保存为一个新的文本文件。 # 程序代码如下: import re f1 = open(‘a.txt‘,‘r‘) strf1 = f1.read() print("原文件内容为:") print(strf1) #将字符串以空格为分隔符生成一个列表 strf1_list = strf1.split() #去除列表中元素结尾的逗号和句号,并获取有逗号和句号的元素索引和值保存在一个字典中 i = 0 j = {} for strs in strf1_list: if ‘.‘ in strs or ‘,‘ in strs: j[i]=strs strf1_list[i] = strs[:-1] i += 1 print("打印出没有句号和逗号的列表") print(strf1_list) print("打印出有句号有逗号的元素索引和值") print(j) f1.close() # 由于原文件需要被替换的单词都是大写的英文单词 # 使用正则表达式找出原文件中所有将被替换的单词 replist = re.findall(r‘[A-Z]{2,}‘,strf1) print("原文件中将被替换的单词为:") print(replist) for rep in replist: #元音字母开头的字母提示信息不一样 if rep[0] in ‘AEIOU‘: inputstr = input("Enter an %s " % rep) else: inputstr = input("Enter a %s " % rep) print(inputstr) # 先将替换后的单词插入到原列表对应的位置 strf1_list.insert(strf1_list.index(rep),inputstr) # 再将原先的单词删除 strf1_list.remove(rep) #将上面去除逗号或句号的元素后面将逗号或句号添加回去,根据j字典可以准确找到结尾有逗号或句号的元素 for key,value in j.items(): strf1_list[key] = str(strf1_list[key]) + str(value[-1]) # 将列表转换为字符串 newstr = ‘ ‘.join(strf1_list) print("替换后的内容为:") # print(newstr) # 将新的字符串写入文件b.txt中,并打印到屏幕 f2 = open(‘b.txt‘,‘w+‘) f2.write(newstr) f2.close()
时间: 2024-10-10 12:08:25