From b06bb17ac7fc2ed965322605981baf8f75a03a50 Mon Sep 17 00:00:00 2001 From: inoks Date: Mon, 18 Sep 2017 20:47:47 +0200 Subject: [PATCH 1/2] Update field_parser.py Remove extra unprintable symbols from data (for ex. chr(31)). --- dbfread/field_parser.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dbfread/field_parser.py b/dbfread/field_parser.py index e54ccb2..918949a 100644 --- a/dbfread/field_parser.py +++ b/dbfread/field_parser.py @@ -3,6 +3,7 @@ """ import sys import datetime +import string import struct from decimal import Decimal from .memo import BinaryMemo @@ -102,6 +103,8 @@ def parseF(self, field, data): """Parse float field and return float or None""" # In some files * is used for padding. data = data.strip().strip(b'*') + # Some files have chr(31), which we need to remove + data = filter(string.printable.__contains__, data) if data: return float(data) From ed9059bad88512466468d8cf52846ec0bc1aec6f Mon Sep 17 00:00:00 2001 From: inoks Date: Mon, 18 Sep 2017 20:59:17 +0200 Subject: [PATCH 2/2] Remove unprintable chars at parseN Remove unprintable chars at parseN only --- dbfread/field_parser.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dbfread/field_parser.py b/dbfread/field_parser.py index 918949a..fb233a4 100644 --- a/dbfread/field_parser.py +++ b/dbfread/field_parser.py @@ -103,8 +103,6 @@ def parseF(self, field, data): """Parse float field and return float or None""" # In some files * is used for padding. data = data.strip().strip(b'*') - # Some files have chr(31), which we need to remove - data = filter(string.printable.__contains__, data) if data: return float(data) @@ -166,7 +164,9 @@ def parseN(self, field, data): """ # In some files * is used for padding. data = data.strip().strip(b'*') - + # Some files have chr(31), which we need to remove + data = filter(string.printable.__contains__, data) + try: return int(data) except ValueError: