Python实现疯狂填词(Mad Libs)程序详解

蓝鲸
蓝鲸
发布时间:2026-10-13 | 3人浏览过
原创

本文详细介绍如何使用Python实现疯狂填词程序。通过导入re模块构建正则表达式,自动识别文本中的ADJECTIVE、NOUN等占位符。程序循环提示用户输入替换词,利用字符串replace方法更新内容,最终将修改后的文本保存至新文件并输出到屏幕,适合Python初学者理解正则匹配与文件操作。

本文介绍一种基于Python的疯狂填词程序实现方案,供读者参考学习。

具体需求如下:

  • 编写一个程序,读取指定文本文件,当文件中出现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

实现思路分析:

  • 程序主要执行以下逻辑: 读取源文本文件内容。 定位特定词汇并获取用户输入的替换值。 将修改后的内容保存至新文件,同时在控制台打印结果。
  • 代码实现步骤包括: 导入re模块以支持正则表达式。 定义函数创建正则表达式对象。 在函数中调用Regex.findall()获取所有匹配项列表。 打开源文件并将内容读取至变量。 使用for循环遍历匹配项,提示用户输入。 利用字符串replace方法执行替换操作。 通过print()将最终文本输出至屏幕。 使用open.write()将结果写入新文件。

具体代码实现如下:


import re
def madLibs(longStr):
  madLibsRex = re.compile(r'ADJECTIVE|NOUN|ADVERB|VERB') #正则表达式对象
  print(madLibsRex.findall(longStr)) #验证是否模式匹配正确
  return madLibsRex.findall(longStr)

openFile = open('123.txt','r')
longStr = openFile.read() #将文本内容读入变量longStr
print("源文本如下:",longStr)
for i in madLibs(longStr): #循环遍历函数返回的匹配对象列表
  print("Enter an {0}:".format(i))
  longStr = longStr.replace(i,input()) #调用字符串的replace()方法输入替换,再赋值给longStr
print(longStr)
resultFile = open('new123.txt','w') #在当前工作目录创建一个新的文件
resultFile.write(longStr) #将字符串变量写入resultFile对象
openFile.close()
resultFile.close()

程序运行结果如下:

如需了解更多Python相关知识,可参考本站相关教程,包括《Python数据结构与算法教程》、《Python列表操作技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》。

希望本文内容对读者的Python编程学习有所帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表