python 处理csv文件的过程对换行符的处理
最近在处理文件的时候遇到csv文件中出现换行导致文件无法正常解析的情况,将解决方法记录下。
最开始读取csv文件的时候,常用的办法是自己写一个读csv文件的方法。比如
def parse_csv(self):try:with codecs.open(self.abs_todo_parse_file, 'rb', encoding='UTF-8') as csvfile:csv_reader = csv.reader(csvfile, delimiter=',', quotechar='"', dialect=csv.excel)rows = list(csv_reader)self.file_count_total = len(rows)print 'A%d:%s%d: %s' % (self.xls_start_row,max(self.xls_line_fields.keys()),self.file_count_total,self.rel_todo_parse_file)for row_index, row in enumerate(rows):row_count = row_index + 1 - self.xls_start_rowif row_count < 0:continuekw = {}for col, key in self.xls_line_fields.iteritems():if (alphabet2number(col) - 1) < len(row):kw[key] = row[alphabet2number(col) - 1]kw[key] = self._check_scientific_notation(col, key, kw[key])if self.check_model(kw):self.parse_model(kw, row_count)except Exception, e:traceback.print_exc(str(e))return Falseelse:return True
这种解析对大部分的csv文件都能正确读取,但是在遇到在分割符间有换行符的情况就会出现问题。比如下面的文件
图中框中的数据因为由两行组成,在换行的地方程序会默认已经完成一次的读取,导致读取的数据有误。
解决办法:
既然自己写的无法正常读取,就去官方文档中寻求帮助。python本身提供的有csv.reader 和csv.DictReader两种方法。使用DictReader能完美的解决这个问题。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
