疯狂填词

创建一个疯狂填词( Mad Libs)程序,它将读入文本文件, 并让用户在该文本 文件中出现 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

以下的文本文件将被创建:

The silly panda walked to the chandelier and then screamed. A nearby pickup truck was 
unaffected by these events.

结果应该打印到屏幕上, 并保存为一个新的文本文件.

------------------------- 华丽的分割线 ------------------------

程序分解:

  1. 打开原文件
  2. 编写匹配字符串的正则表达式
  3. 逐行读取(要删除换行符),匹配正则,提示用户输入待替换字符并完成替换
  4. 逐行将替换后的新内容(记着添加换行符)写入新文件(所以要先打开一个文件,采用追加更新模式 'a+'
  5. 关闭打开的文件,释放内存。

程序代码如下:

import re,os

# 切换到当前目录以方便操作
os.chdir(r'D:\python\ch00_book\09_automateTheBoringStuff\ch0892_madLibs')
# 1.打开原文件,采取默认是读模式即可
file1 = open(r'.\test1.txt')
# 打开一个新文件,用来写入,采取追加更新模式
file2 = open(r'.\test2.txt','a+')
# 2.编写正则表达式,忽略大小写
regex_pattern = re.compile(r'(ADJECTIVE|NOUN|ADVERB|VERB)',re.IGNORECASE)

# 3.逐行读取原文件 .read().splitlines()用法会自动去除换行符
for line in file1.read().splitlines():
    # 逐行匹配正则
    while regex_pattern.search(line):
        toChange = regex_pattern.search(line)
        # 提示用户输入【要替换的字符】
        ans = input('Please input a/an ' + toChange.group() + ':\n')
        # 用 sub 正则进行替换
        line = regex_pattern.sub(ans,line,1)
    # 4.逐行写入替换后的每行字符,并添加换行符,以和原字符样式保持一致
    file2.write(line + '\n')
# 5.关闭文件,释放内存
file2.close()
file1.close()

本文分享自微信公众号 - 乐享数据8090(gh_5703273a0562),作者:披头

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python编程快速上手——疯狂填词程序实现方法分析

    Enter an adjective: silly Enter a noun: chandelier Enter a verb: screamed ...

    砸漏
  • 小游戏全面上线!我们帮你试了 10 款,好玩到停不下来

    知晓君
  • Git同时配置Gitee和GitHub

    默认只读取 id_rsa,为了让 SSH 识别新的私钥,需要将新的私钥加入到 SSH agent 中

    乐心湖
  • 计算机专业最该做的四件事

    作为计算机系的学生,在外人看来就是会修电脑的,是必须要学会修电脑嘛,修电脑是维修工的事情,不是计算机必修课。作为计算机专业的小伙伴该如何让自己过得更加有意义。如...

    程序员互动联盟
  • 微信,我小鸡忍你很久了…… | 开发

    知晓君
  • 高并发下缓存雪崩、穿透、击穿了,你该如何挽救

    在今天的互联网里,高并发、大数据量、大流量已经成为了代言词,那么我们的系统也承受着巨大的压力,首当其冲的解决方案就是redis。

    公众号 IT老哥
  • 疯狂的泡泡玛特

    也许你没听过泡泡玛特,但是你也许会在网络上看到一个嘟嘟脸、蓝眼睛的可爱女孩子玩偶MOLLY,当然同时一起出现的还有一个名词——盲盒。

    刘旷
  • 【程序源代码】IDEA 实用和精美的插件

    plugin that loads a background image into editors

    程序源代码
  • 从1984到非同凡想:苹果史上两则经典广告回顾

    大数据文摘
  • 重磅!潮玩教父Michael Lau ╳ QQ联名手办空降QTX潮玩展!

    ? ? (展会地图,点击可放大) *如因特殊情况发生变动,请以展会当天公布为准 5月1日-5月3日 国际顶级艺术大咖 潮玩教父 Michael Lau 全...

    腾讯ISUX
  • 为什么JavaScript开发如此疯狂

    Web开发中其他一切对你而言都是小菜一碟,但当你深入探究JavaScript的时候,不免有一种“众人皆醒你独醉”的悲壮——好像其他人都知道你不知道的一些大的基础...

    哲洛不闹
  • 跨境3.0时代正合奇胜法则:动态需求理论

    1.0,流量时代。关键词就那么几个,不断获取更多平台或者获取某个平台更多的流量是绝大多数人的玩法。那个时候大家所做的事情就是打造爆款,给消费者更多的认知而不是品...

    一个会写诗的程序员
  • PhpStrom 快捷键

    插入编辑位置 alt+鼠标左 跳到代码块的 开始/结束 ctrl+[ / ctrl+] 选中代码块的开始/结束的地方到当前位置 ctrl+shift...

    lwen
  • 撒狗粮5年撒出5个亿

    五年前,一位28岁的徐州小伙子崔佳从北京回到徐州下决心创业。他动物医学专业毕业后,在民企外企打过工,卖过宠物、宠物药品、保健品、食品,做过宠物服务和宠物自媒体。...

    用户1569917
  • 程序员如何用“撞针“拯救35亿地球人?

    在《佩奇扑街、外星人疯狂!Python 告诉你大年初一应该看哪部电影》一文中,笔者与所有朋友分享了应该春节阖家欢乐之时可以带着家人去看哪部电影。随后,笔者也在大...

    AI科技大本营
  • 感悟《疯狂的程序员》

    本文来自群友:Octopus恋 对《疯狂的程序员》感悟 ---- 1、你不会造车,但可以去卖车;你不会下蛋,但可以炒蛋炒饭卖。而且卖车的肯定比造车的更会卖车,炒...

    zhisheng
  • 【专家答疑】疯狂的Android

    Android系统就是一个开放式的移动互联网操作系统,Android已经成为应用最广的移动互联网平台,对于Java语言而言,Android系统给了Java一个新...

    博文视点Broadview
  • 疯狂JAVA讲义的学习

    链接: https://pan.baidu.com/s/19irquu-Lsw8IPcr7ohv1kg

    阮键
  • 疯狂Spring Boot终极讲义

    有些人还在直接用Jedis操作Redis数据库,但这种方式非常不方便,而且很不灵活。用Spring Boot整合Redis之后,既能非常方便地操作Redis数据...

    程序IT圈

扫码关注云+社区

领取腾讯云代金券