如何将编码文本用作字符串

时间:2018-02-19 10:55:33

标签: python python-3.x encoding decoding

我想使用Python 3.6将编码文本写入文件,问题是我想把它写成字符串而不是字节。

text = open(file, 'r').read()
enc = text.encode(encoding)  # for example: "utf-32"
f = open(new_file, 'w')
f.write(str(enc)[2:-1])
f.close()

问题是,我仍然将文件内容作为字节(例如' \ n'保持不变而不是成为新行)。

我也尝试过使用:

enc.decode(encoding)

但它只是让我回到原先的文字。

任何想法如何改进这段代码?

感谢。

1 个答案:

答案 0 :(得分:0)

您遇到的问题是您encode进入utf-32个字节对象,然后将其强制转换回字符串对象而不指定编码。默认值为utf-8,因此您刚刚使用错误的编码进行转换。如果您将相同的编码传递给str,那么它应该可以正常工作。

更好的是,在写出时根本不要调用str - 如果你已经有了一个字节对象,那就不必了。

这个概念通常会绊倒很多人。我建议阅读解释here,以帮助我们了解我们如何以及为什么要进行字符串/字节转换。一个好的经验法则 - python中的字符串类型,并在数据进入时从字节解码为字符串,在字符串输出时从字符串到字节进行编码。