今天用xlwt写了一个excel表格,最后保存为csv文件:
workbook.save('Titanic.csv')
但是想从这个文件中读取数据的时候却出了问题:
data = pd.read_csv('Titanic.csv', encoding='utf-8')
print(data.head())
检查了一下这个文件的编码格式,发现问题:
import chardet
content_xlsx = open('Titanic.xlsx', 'rb')
content_csv = open('Titanic.csv', 'rb')
print(chardet.detect(content_csv.read()))
print(chardet.detect(content_xlsx.read()))
其中Titanic.xlsx
和Titanic.csv
都是用xlwt模块生成的,可以看到两种文件的编码应该都不是utf-8,虽然置信度只有43.5%,但也说明了一定问题。
通过调节编码方式解决这个问题应该是不行了,首先save函数只有一个参数:
其次我按网上说的将csv以txt格式打开然后另存为utf-8编码格式的csv文件也未成功,新文件完全打不开。
试验后发现要解决这个问题可以用以下两种方法:
- 改用
pandas.read_excel
函数读取文件,亲测可以 - 处理数据必然要把数据转为DataFrame格式吧,那保存的时候直接用DataFrame内置的
to_csv()
就好了,这样编码也不会出问题,函数参数就是文件的路径,如果文件已存在就会写入该文件,如果文件不存在就会在工作目录下新建该文件