好的,所以python3和unicode。我知道所有python3字符串实际上都是unicode字符串,所有python3代码都存储为utf-8。但python3如何读取文本文件?是否假设它们是以utf-8编码的?在阅读文本文件时是否需要调用decode('utf-8')?那么pandas read_csv()和to_csv()?
答案 0 :(得分:6)
Python的built-in function open()
有一个可选参数encoding
:
encoding 是用于解码或编码文件的编码的名称。这应该只在文本模式下使用。默认编码是 平台依赖(无论
locale.getpreferredencoding()
返回), 但是可以使用Python支持的任何文本编码。见codecs
module获取支持的编码列表。
类似参数可以在pandas中找到:
pandas.read_csv()
:encoding
:str,默认无。在读/写时编码用于UTF(例如‘utf-8’
)。Series.to_csv()
:encoding
:字符串,可选。表示在内容为非ascii时使用的编码的字符串,用于3之前的python版本。DataFrame.to_csv()
:encoding
:字符串,可选。表示要在输出文件中使用的编码的字符串,在Python 2上默认为‘ascii’
,在Python 3上默认为‘utf-8’
。答案 1 :(得分:3)
确定要读取的文本文件的char编码并不简单,但是可以做到。
请阅读How to determine the encoding of text?
答案 2 :(得分:0)
读取文本文件时需要调用解码('utf-8')吗?
您需要尝试阅读文本文件,以确保该文件中的utf-8编码。