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_row
                    if row_count < 0:
                        continue
                    kw = {}
                    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 False
        else:
            return True

这种解析对大部分的csv文件都能正确读取,但是在遇到在分割符间有换行符的情况就会出现问题。比如下面的文件
python 处理csv文件的过程对换行符的处理_第1张图片

图中框中的数据因为由两行组成,在换行的地方程序会默认已经完成一次的读取,导致读取的数据有误。

解决办法
  既然自己写的无法正常读取,就去官方文档中寻求帮助。python本身提供的有csv.readercsv.DictReader两种方法。使用DictReader能完美的解决这个问题。

你可能感兴趣的:(python)