python 处理csv文件的过程对换行符的处理

    xiaoxiao2021-03-25  132

      最近在处理文件的时候遇到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.reader 和csv.DictReader两种方法。使用DictReader能完美的解决这个问题。

    转载请注明原文地址: https://ju.6miu.com/read-19710.html

    最新回复(0)