在python中替换text中的文本数据类型

时间:2015-10-11 05:30:46

标签: python-3.x character-encoding

下面的行给出了错误: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)

请建议。

1 个答案:

答案 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模块是   使用编码文本文件的推荐方法,这个模块[即。编解码器]   提供允许使用的其他实用程序功能和类   处理二进制文件时使用更广泛的编解码器