趣味实验python,Python小实验:疯狂填词

#! 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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值