首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何连接()--第8章自动完成无聊的工作

如何连接()--第8章自动完成无聊的工作
EN

Stack Overflow用户
提问于 2016-06-06 20:58:30
回答 5查看 1.7K关注 0票数 0

使用Python书自动生成无聊的内容:“创建一个Mad Libs程序,该程序读取文本文件,让用户在文本文件中出现形容词、名词、副词或动词的任何地方添加自己的文本。例如,文本文件可能如下所示:

形容词熊猫走到名词,然后是动词。附近的一个名词没有受到这些事件的影响。

程序会发现这些情况,并提示用户替换它们。“

我几乎完成了,但我似乎不知道如何.join文件上的最后一个列表。我在网上查过并尝试了这些方法。我没有从join中获取字符串,而是在‘'.join(mod4)中使用空格分隔每个列表字符串值中的字母。‘A‘n’,o n‘,t w o’,a n d,h r e,f o r‘所有的东西都能做这件事。

代码语言:javascript
复制
#! python3

import re

madText = open('madText.txt', 'w')

text = 'An ADJECTIVE, a NOUN, an ADVERB and a VERB.'

madText.write(text)
madText.close()

content = re.split('\W+', text)

for i in content:

    if i == "ADJECTIVE":
        replaceRegex = re.compile(r'(ADJECTIVE)')
        print('Enter an ADJECTIVE:')
        ADJECTIVE = input()
        output = replaceRegex.sub(ADJECTIVE, str(content))

    elif i == "NOUN":
        replaceRegex = re.compile(r'(NOUN)')
        print('Enter a NOUN:')
        NOUN = input()
        output = replaceRegex.sub(NOUN, str(output))

    elif i == "ADVERB":
        replaceRegex = re.compile(r'(ADVERB)')
        print('Enter an ADVERB:')
        ADVERB =  input()
        output = replaceRegex.sub(ADVERB, str(output))

    elif i == "VERB":
        replaceRegex = re.compile(r'(VERB)')
        print('Enter a VERB:')
        VERB = input()
        output = replaceRegex.sub(VERB, str(output))

content = re.split('\W+', output)
#content = list(output.split(' '))
content = ' '.join(content)
print(content)
madLibs = open('madText2.txt', 'w')
madLibs.write(content)
madLibs.close()
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-06-06 21:04:50

你有一个基本的假设来阻止你完成这个任务。您的mod4分配是基于以前的分配和他们的顺序。

相反,您应该做的是将output变量初始化为[],并在遍历content时将单词附加到其中。您可以将您的adlib单词与真实的单词一起添加。

一旦构建了输出列表,然后使用join将该output转换为字符串。

而且,使用regex也太过分了。让我们假设您已经在循环之前做了一个output = []

代码语言:javascript
复制
if i == 'NOUN':
   print('Enter a NOUN:')
   noun = input()  # raw_input() on Python 2
   output += noun
[...]

现在,当您点击每个adlib令牌时,您可以用输入的文本替换它,并构建输出列表。

票数 3
EN

Stack Overflow用户

发布于 2019-12-17 01:10:00

这是我对同样的练习的解决方案。

代码语言:javascript
复制
import os, re

def start():
    fileName = input('Enter the file name: ')
    exist_fileName = os.path.abspath(fileName)
    if os.path.exists(exist_fileName) == True:

        text_file = open(exist_fileName)
        text_content = text_file.read()
        text_file.close()
        print(text_content)


        text_regex = re.compile(r'ADJECTIVE|NOUN|VERB|ADVERB')
        match_text = text_regex.findall(text_content)

        for match in match_text:
            user_input = input('Enter ' + match + ': ')
            text_content = text_content.replace(match, user_input, 1)
        print(text_content)

        new_fileName = 'new_' + fileName
        new_file = open(new_fileName, 'w')
        new_file.write(text_content)
        new_file.close()

    else:
        print('The file you have entered does not exist. Please enter a valid file name.')
        start()

start()
票数 2
EN

Stack Overflow用户

发布于 2016-06-13 00:14:12

这是我的答案。我想我应该在发帖后的4分钟内得到-2的选票。:)

代码语言:javascript
复制
import re

madText = open('madText.txt', 'w')
text = 'An ADJECTIVE, a NOUN, a VERB and an ADVERB and a NOUN.'
madText.write(text)
madText.close()
content = re.split('(\W+)', text)

for i in content:
    if i == 'NOUN':
        content.insert(content.index('NOUN'), input('Replace ' + i + ': '))
        content.remove('NOUN')
    elif i == 'VERB':
        content.insert(content.index('VERB'), input('Replace ' + i + ': '))
        content.remove('VERB')
    elif i == 'ADVERB':
        content.insert(content.index('ADVERB'), input('Replace ' + i + ': '))
        content.remove('ADVERB')
    elif i == 'ADJECTIVE':
        content.insert(content.index('ADJECTIVE'), input('Replace ' + i + ': '))
        content.remove('ADJECTIVE')

content = ''.join(content)
print(content)
madLibs = open('madText2.txt', 'w')
madLibs.write(content)
madLibs.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37666790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档