diff --git a/account_statement_base_import/parser/file_parser.py b/account_statement_base_import/parser/file_parser.py index 74013299..e006e398 100644 --- a/account_statement_base_import/parser/file_parser.py +++ b/account_statement_base_import/parser/file_parser.py @@ -106,7 +106,7 @@ class FileParser(BankStatementImportParser): return True - def _parse_csv(self, delimiter=';'): + def _parse_csv(self): """ :return: list of dict from csv file (line/rows) """ @@ -114,7 +114,7 @@ class FileParser(BankStatementImportParser): csv_file.write(self.filebuffer) csv_file.flush() with open(csv_file.name, 'rU') as fobj: - reader = UnicodeDictReader(fobj, delimiter=delimiter, fieldnames=self.fieldnames) + reader = UnicodeDictReader(fobj, fieldnames=self.fieldnames) return list(reader) def _parse_xls(self): diff --git a/account_statement_base_import/parser/parser.py b/account_statement_base_import/parser/parser.py index c39098fa..a2dff32d 100644 --- a/account_statement_base_import/parser/parser.py +++ b/account_statement_base_import/parser/parser.py @@ -22,7 +22,12 @@ import base64 import csv def UnicodeDictReader(utf8_data, **kwargs): - csv_reader = csv.DictReader(utf8_data, **kwargs) + sniffer = csv.Sniffer() + pos = utf8_data.tell() + sample_data = utf8_data.read(1024) + utf8_data.seek(pos) + dialect = sniffer.sniff(sample_data, delimiters=',;\t') + csv_reader = csv.DictReader(utf8_data, dialect=dialect, **kwargs) for row in csv_reader: yield dict([(key, unicode(value, 'utf-8')) for key, value in row.iteritems()]) @@ -210,4 +215,4 @@ def new_bank_statement_parser(parser_name, *args, **kwargs): if cls.parser_for(parser_name): return cls(parser_name, *args, **kwargs) raise ValueError - \ No newline at end of file +