下面的行给出了错误:TypeError:' str'不支持缓冲区接口。我搜索了很多。这是Python 3中的一个问题。
with codecs.open(filename, 'w', 'utf-8') as o:
text = "I charge it at night & morning."
txtEncode = text.encode('utf8')
data = txtEncode.replace("&", "&")
o.write(data)
请建议。
答案 0 :(得分:1)
将数据保存到文件时,编解码器将执行所有必要的编码工作。因此,您可以忘记编码细节,并在字符串上方便地工作。
这意味着:不要这样做:
txtEncode = text.encode('utf8')
因为txtEncode的类型是字节。
以下是更正后的代码:
with codecs.open(filename, 'w', 'utf-8') as o:
text = "I charge it at night & morning."
data = text.replace("&", "&")
o.write(data)
对于像您这样的简单案例,可以使用open
代替codecs.open
。来自Python3文档:
虽然内置的open()和相关的io模块是 使用编码文本文件的推荐方法,这个模块[即。编解码器] 提供允许使用的其他实用程序功能和类 处理二进制文件时使用更广泛的编解码器