从文件中读取字符串,替换它,并将其存储在新文件中。(Python 3.x)
创建一个Mad Libs程序,读取文本文件,并允许用户在文本文件中出现单词形容词、名词、副词或动词的任何位置添加自己的文本。例如,文本文件可能如下所示: 形容词panda依次指向名词和动词。附近的一个名词是 不受这些事件的影响 程序将查找这些事件并提示用户替换它们从文件中读取字符串,替换它,并将其存储在新文件中。(Python 3.x),python,Python,创建一个Mad Libs程序,读取文本文件,并允许用户在文本文件中出现单词形容词、名词、副词或动词的任何位置添加自己的文本。例如,文本文件可能如下所示: 形容词panda依次指向名词和动词。附近的一个名词是 不受这些事件的影响 程序将查找这些事件并提示用户替换它们 Enter an adjective: silly Enter a noun: chandelier Enter a verb: screamed Enter a noun: pickup truck 然后将创建以下文本文件: 愚蠢
Enter an adjective:
silly
Enter a noun:
chandelier
Enter a verb:
screamed
Enter a noun:
pickup truck
然后将创建以下文本文件:
愚蠢的熊猫走向吊灯,然后尖叫起来。附近的一辆皮卡车没有受到这些事件的影响
结果应打印到屏幕上并保存到新的文本文件中
我的代码:
import os
InputFile = open('FileOne.txt','r')
InputContent = InputFile.read()
InputFile.close()
outputFile = open('FileTwo.txt','w')
convert = InputContent
for word in ['NOUN', 'ADJECTIVE', 'VERB']:
if word in InputContent:
convert = convert.replace(word, input('Enter %s: ' %word))
outputFile.write(convert)
outputFile.close()
我文件的内容是:名词是形容词person。突然名词动词。名词现在死了
当我运行代码时:
Enter NOUN: Dave
Enter ADJECTIVE: lovely
Enter VERB: screamed.
它创建输出文本文件FileTwo,但它是空的
输出文件应包含
戴夫是个可爱的人。突然,戴夫尖叫起来。戴夫现在死了
我做错了什么
编辑:更改了代码。现在可以了。非常感谢您的帮助:D在python解释器中尝试简化版本的代码,可以非常清楚地显示错误
>>>convert = ''
>>>convert.replace('abc', '123')
''
您正在使用空字符串“”并将名词(不存在)替换为Dave,其结果仍然是空字符串
然后将空字符串写入FileTwo.txt
解决方案是对InputContent调用replace()
一个简单的例子是
>>>InputContent = 'Hello NOUN, my name is NOUN'
>>>InputContent.replace('NOUN', 'Dave')
'Hello Dave, my name is Dave'
现在您可以看到replace()替换搜索词的所有实例(在本例中为名词)
解决这个新问题将留给您作为练习这是因为您试图覆盖的变量convert是一个空字符串。因此,当您将输出放入第二个文件时,实际上没有放入任何内容 如果取而代之的是convert,并将其设置为等于InputContent,那么每次替换后,您都将convert设置为等于convert,这样效果很好:
import os
InputFile = open('FileOne.txt','r')
InputContent = InputFile.read()
InputFile.close()
outputFile = open('FileTwo.txt','w')
convert = InputContent
for word in ['NOUN', 'ADJECTIVE', 'VERB']:
if word in InputContent:
Convert = convert.replace(word, input('Enter %s: ' %word))
convert = Convert
outputFile.write(Convert)
outputFile.close()
convert
与convert
不同。您已将带有小写字母“c”的convert
设置为空字符串。然后在循环中用大写字母“c”设置“Convert”。我会更改它。谢谢你的帮助:)很高兴我能帮忙。记住接受答案以关闭线程;)哦,我不知道。完成。