从《用Python自动化无聊的东西》一书中: 创建一个madlibs程序,该程序读入文本文件,并允许用户在文本文件中出现形容词、名词、副词或动词的任何位置添加自己的文本。例如,文本文件可能如下所示:
形容词panda先是名词,然后是动词。附近的一个名词是 不受这些事件的影响。在
程序会找到这些情况并提示用户进行替换。”
我快做完了,但我好像不知道怎么做。加入文件中的最后一个列表。我在网上查过,试过这些方法。我没有从join中获取字符串,而是在“”中获取空格。join(mod4)分隔每个列表字符串值中的字母。 [“A n”,“o n e”,“t w o”,“A n d”,“t h r e e”,“f o u 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()
这是我对同样练习的解决方案。在
你有一个基本的假设阻止你完成这项工作。您对
mod4
的赋值基于之前的赋值及其顺序。在相反,您应该做的是将
output
变量初始化为[]
,并在遍历content
时向其追加单词。你可以加上你的即兴词和真正的词。在一旦构建了输出列表,然后使用
join
将该output
转换为字符串。在另外,使用
regex
是一种过度的杀戮。假设您在循环之前做了一个output = []
。在现在,当您点击每个adlib标记时,您将其替换为输入的文本并构建输出列表。在
这是我的答案。我想我应该在4分钟内得到-2个否决票。:)
相关问题 更多 >
编程相关推荐