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()
相關文章
相關標籤/搜索