【发布时间】:2019-04-10 07:45:47
【问题描述】:
我有一个函数可以遍历文本文件,将单词与字典中的键匹配,并将这些单词更改为键值:
def replace_operators(text):
operators = {'order': '"order"'}
f = open(text, 'r').read()
for k, v in operators.items():
cleaned = re.sub(r"\b%s\b" % k, v, f)
f = open(text, 'w')
f.truncate(0)
f.close()
text_file = open(text, 'w')
text_file.write(cleaned)
text_file.close()
这很好,但是当我向字典中添加另一个键时,我收到:
TypeError:预期的字符串或类似字节的对象
我尝试了在清理后的行中用 str(f) 替换 f 的解决方案(由 this 回答建议),但是这只会将以下行写入我的输出文件:
<_io.textiowrapper mode="w" encoding="cp1252">
有谁知道我如何添加更多键而不会出现这种错误?
【问题讨论】:
-
在您第一次通过
for k, v in ...循环后,f是关闭的文件对象,而不是初始读取的结果。 -
另外,如果你连续以写模式打开文件,每次迭代都会清除所有之前存储的文件内容
-
您的两点都很有道理,谢谢。您有什么建议的解决方案吗?
-
一个开始的地方是将
'w'更改为'a',这意味着追加,然后将 f.close() 和 text_file.close() 移到 for 循环之外。
标签: python