从文件中读取字符串,将其替换,并将其存储在新文件中。 (Python 3.x)
创建一个读取文本文件的Mad Libs程序,并允许用户在文本文件中出现ADJECTIVE,NOUN,ADVERB或VERB的任何位置添加自己的文本。例如,一个文本文件可能看起来像这样:从文件中读取字符串,将其替换,并将其存储在新文件中。 (Python 3.x)
ADJECTIVE熊猫走到NOUN,然后VERB。附近的NOUN是 不受这些事件的影响。
该程序会发现这些事件并提示用户更换它们。然后
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()
我FileOne的内容是:名词是形容词的人。突然NOUN VERB。 NOUN现在已经死了。
当我运行代码:
Enter NOUN: Dave
Enter ADJECTIVE: lovely
Enter VERB: screamed.
它创建文本文件FileTwo传送输出,但它是空的。
输出文件应包含
戴夫是一个可爱的人。突然戴夫尖叫起来。戴夫现在已经死了。
我在做什么错?
编辑:更改了代码。它现在有效。非常感谢您的帮助:d
Th是因为你想要覆盖的变量是一个空字符串。所以,当你把输出放在第二个文件中时,你几乎没有任何内容。
相反,如果你把转换并设置它等于InputContent,那么之后每次更换设置转换等于转换,然后它的伟大工程:
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()
在Python解释器尝试你的代码的简化版本,显示了错误的很清楚
>>>convert = ''
>>>convert.replace('abc', '123')
''
你把空字符串“”和更换名词(它不存在)与戴夫,其结果仍然是一个空字符串。
然后您将空字符串写入FileTwo。TXT
的解决办法是调用替换()在InputContent
一个简单的例子是
>>>InputContent = 'Hello NOUN, my name is NOUN'
>>>InputContent.replace('NOUN', 'Dave')
'Hello Dave, my name is Dave'
现在你看到的是替换()取代所有实例的搜索词的(在此case NOUN)
解决这个新问题将作为练习留给你
谢谢你的帮助:) – Renegade
'convert'是'Convert'不同。 – ForceBru
你已经将小写'c'转换为空字符串。然后在循环中用'c'设置'Convert'。 –
我会改变它。 – Renegade