这是我的代码看起来像
import re
fileIN = str(open('instructions.txt', 'w+'))
contents = re.sub('a', 'x', fileIN)
fileIN.write(contents)
我希望这个程序取代字母' a'用字母' x'在文件' instructions.txt'中,如下所示:
a
ab
abc
TO
x
xb
xbc
然后将结果保存在同一个文件中。但是,当我运行它时,我收到以下错误消息:
AttributeError: 'str' object has no attribute 'write'
我确定这是一个快速修复,但我似乎无法找到它。
任何帮助将不胜感激!如果我需要提供其他信息,请与我们联系。
(免责声明:请原谅我发布了一个非常常见的问题。我确实看过许多类似的帖子,但我无法收集任何解决方案。我刚开始学习python一周前,我想也许我可以试试编写一个小程序来帮助我节省一些工作时间。可悲的是,这种情况适得其反,因为我已经花了太多时间试图弄明白自己。)
(编辑:感谢所有评论和帮助过的人。我认为我的问题会被深深地推向地狱的深处,因为我认为这个问题非常微不足道。我觉得我真的很支持编码菜单,我和很高兴我有这种经历。)
答案 0 :(得分:1)
您正在打开一个文件:
open('instructions.txt', 'w+')
然后立即将其转换为字符串,而不先保存对文件对象的引用,并保存对该文件的字符串内容的引用:
fileIN = str(...)
然后在此字符串中执行替换:
contents = re.sub('a', 'x', fileIN)
尝试写点什么。
fileIN.write(contents)
fileIN
在任何时候都没有对文件对象的引用。它只是一个字符串,无法写入。如果要保持对文件对象的访问,请保存对它的引用,而不是组合所有内容:
fileIN = open('instructions.txt', 'w+')
contents = fileIN.read()
contents = re.sub('a', 'x', contents)
然后,您就可以写入fileIN
引用的文件对象。
答案 1 :(得分:0)
你为什么使用str?:
with open('file', 'r') as f:
text = f.read()
with open('file', 'w') as f:
f.write(re.sub('a', 'x', text))
答案 2 :(得分:0)
它告诉你没有方法写在字符串对象上。您需要在文件对象上调用write。
fileIN = open('instructions.txt', 'w+')
contents = fileIN.read()
fileIN.write(re.sub('a', 'x', contents))
答案 3 :(得分:0)
这不需要import re
。内置replace()
即可。
with open("instructions.txt", "r+") as f:
data = f.read().replace("a","x")
f.seek(0)
f.write(data)
答案 4 :(得分:-1)
确保不要混淆文件对象和字符串:
import re
f = open('instructions.txt', 'w+')
contents = re.sub('a', 'x', f.read())
f.write(contents)