使用Python书自动生成无聊的内容:“创建一个Mad Libs程序,该程序读取文本文件,让用户在文本文件中出现形容词、名词、副词或动词的任何地方添加自己的文本。例如,文本文件可能如下所示:
形容词熊猫走到名词,然后是动词。附近的一个名词没有受到这些事件的影响。
程序会发现这些情况,并提示用户替换它们。“
我几乎完成了,但我似乎不知道如何.join文件上的最后一个列表。我在网上查过并尝试了这些方法。我没有从join中获取字符串,而是在‘'.join(mod4)中使用空格分隔每个列表字符串值中的字母。‘A‘n’,o n‘,t w o’,a n d,h r e,f o r‘所有的东西都能做这件事。
#! 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()发布于 2016-06-06 21:04:50
你有一个基本的假设来阻止你完成这个任务。您的mod4分配是基于以前的分配和他们的顺序。
相反,您应该做的是将output变量初始化为[],并在遍历content时将单词附加到其中。您可以将您的adlib单词与真实的单词一起添加。
一旦构建了输出列表,然后使用join将该output转换为字符串。
而且,使用regex也太过分了。让我们假设您已经在循环之前做了一个output = []。
if i == 'NOUN':
print('Enter a NOUN:')
noun = input() # raw_input() on Python 2
output += noun
[...]现在,当您点击每个adlib令牌时,您可以用输入的文本替换它,并构建输出列表。
发布于 2019-12-17 01:10:00
这是我对同样的练习的解决方案。
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()发布于 2016-06-13 00:14:12
这是我的答案。我想我应该在发帖后的4分钟内得到-2的选票。:)
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()https://stackoverflow.com/questions/37666790
复制相似问题