如果CSV文件中的中文是乱码,通常该CSV文件的编码格式是UTF8的.
为了中文显示正常,需要将CSV文件的编码格式转换为GBK格式.
代码:
import pandas as pd
#utf编码格式的csv文件中的中文一般会是乱码,这时需要把文件格式另存为gbk格式
def csv_utf_2_gbk(srcPath):
try:
data=pd.DataFrame(pd.read_csv(srcPath,encoding='utf8',low_memory=False))
data.to_csv(srcPath, index=False, sep=',', encoding='gbk')
except:
print(srcPath,"文件处理出错")
def csv_gbk_2_utf(srcPath):
try:
data=pd.DataFrame(pd.read_csv(srcPath,encoding='gbk',low_memory=False))
data.to_csv(srcPath, index=False, sep=',', encoding='utf8')
except:
print(srcPath, "文件处理出错")
if __name__ == '__main__':
csv_utf_2_gbk('data.csv')
以上方法处理普通中文乱码问题是ok的,但如果源CSV文件中存在特殊字符,则会出现文件出错。
避免乱码的最保险的方式是将csv转换为excel文件,这时候无论是中文还是特殊字符都不会出现乱码。
def csv_2_xlsx(srcPath): try: data = pd.DataFrame(pd.read_csv(srcPath, encoding='utf8', low_memory=False)) except: data = pd.DataFrame(pd.read_csv(srcPath, encoding='gbk', low_memory=False)) data.to_excel(srcPath[:-3] + 'xlsx', sheet_name='Sheet1', index=False)