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

mac2022-06-30  100

一、编码问题 利用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

最新回复(0)