python读csv文件遇到的一系列问题

一、编码问题
利用python读取文件经常会遇到文件的编码与解码问题。这里列了几种方法,可供大家尝试
打开文件代码
with open(input_file, ‘r’,encoding=‘utf-8’) as f:
1、如果utf-8报错,可以改成gbk试一下
with open(input_file, ‘r’,encoding=‘gbk’) as f:
2、如果gbk接着报错,可能是文本中出现的一些特殊符号超出了gbk的编码范围,可以选择编码范围更广的‘gb18030’
with open(input_file, ‘r’,encoding=‘gb18030’) as f:
3、若继续报错,可以使用‘ignore’属性进行忽略。
with open(input_file, ‘r’,encoding=‘gb18030’,errors=‘ignore’) as f:
4、还有一种常见解决方法为
open(input_file).read().decode(‘gb18030’,’ignore’)

二、csv.Error: line contains NULL byte解决方法
这个错误说明的是含有空字符,去看csv的源码,其中一个函数表示,不能有空操作符,即不能有“\0”或者“\x00”(16进制)。
解决办法:
1.如果你的文件是从xlxs格式重命名为csv格式的话,那么重新再另存为csv格式一下就ok。
2、把空字符全部换掉
with open(input_file, “rb”) as f:
reader = csv.reader( (line.replace(’\0’,’’) for line in f) )

三、附上我的源码
实现功能按要求删除某一行再写入进另一个文件
因为我们是要写入,所以我们用的模式就是 ‘a’ 模式,追加内容,至于"newline="就是说因为我们的csv文件的类型,如果不加这个东西,当我们写入东西的时候,就会出现空行。

input_file和out_file是两个csv的文件路径
with open(input_file, 'r',encoding='gb18030',errors='ignore') as csv_file:
    print("打开输出文件成功")
    reader = csv.reader(csv_file)
    print("读取文件成功")
    out = open(out_file, 'a', newline='')
    csv_write = csv.writer(out,dialect='excel')
    print("创建写入指针")
    print(type(reader))
    for row in reader:
        result = re.match(r'<.', row[2])# 去除某一行
        if(result==None):
            csv_write.writerow(row)
            print("正在写入数据")
        else:
            continue
    print("写入数据成功")
out.close()

四、参考博客
https://blog.csdn.net/yedoubushishen/article/details/52823514
https://blog.csdn.net/shijing_0214/article/details/51971734

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值