python 合并csv文件的问题:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xba in position 0、csv中文乱码

  • Post author:
  • Post category:python



python 合并csv文件遇到的问题

  • 问题一:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte
  • 问题二:csv中文乱码
  • 最后附上csv文件合并的代码


问题一:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte

解决办法:

设置read_csv编码格式,添加 encoding=‘gbk’,或encoding=‘gb18030’

data = pd.read_csv(file,encoding='gbk')
data = pd.read_csv(file,encoding='gb18030')


问题二:csv中文乱码

合并csv文件后出现中文乱码,解决办法:

设置to_csv编码格式,由”utf_8″ 改为 “utf_8_sig”

data.to_csv(file,encoding='utf_8_sig')


csv文件合并

步骤:

1、读取多个csv文件,合并至result.csv

2、删除重复的标题行,另存至result_new.csv

import glob
import pandas as pd
# 多个csv文件合并
def merge(csv_list,outputfile): # csv_list 存放所有csv文件路径的列表
    for i in csv_list:
        f = open(i,'rb')
        data = pd.read_csv(f,encoding='gbk')
        data.to_csv(outputfile,mode='a', encoding='utf_8_sig',index=False)
    print('完成合并')

# 标题去重
def distinct(file):
    df = pd.read_csv(file,header=None) # 第一行视为数据而不是标题
    datalist = df.drop_duplicates() # 删除重复行
    datalist.to_csv('D:/exercise_py/exercise01/files/result_new.csv',
                    encoding='utf_8_sig',index=False,header=False) # 去重后最终文件
    print('完成去重')

if __name__ == '__main__':
    csv_list = glob.glob('D:/exercise_py/exercise01/files/成交明细*.csv') # 合并前所有csv文件的路径
    print(csv_list)
    result_path = 'D:/exercise_py/exercise01/files/result.csv'  # 合并后文件路径
    merge(csv_list,result_path)
    distinct(result_path)

参考资料:

python 合并多个csv文件



版权声明:本文为weixin_42827025原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。