# ~*~ coding: utf-8 ~*~ # import chardet import unicodecsv from .base import BaseFileParser class CSVFileParser(BaseFileParser): media_type = 'text/csv' @staticmethod def _universal_newlines(stream): """ 保证在`通用换行模式`下打开文件 """ for line in stream.splitlines(): yield line def generate_rows(self, stream_data): detect_result = chardet.detect(stream_data) encoding = detect_result.get("encoding", "utf-8") lines = self._universal_newlines(stream_data) csv_reader = unicodecsv.reader(lines, encoding=encoding) for row in csv_reader: yield row