diff --git a/landsat/tests/test_utils.py b/landsat/tests/test_utils.py index 7e2f4ac..167e3bd 100644 --- a/landsat/tests/test_utils.py +++ b/landsat/tests/test_utils.py @@ -92,18 +92,24 @@ class TestUtils(unittest.TestCase): def test_convert_to_integer_list(self): # correct input r = utils.convert_to_integer_list('1,2,3') - self.assertEqual(['1', '2', '3'], r) + self.assertEqual([1, 2, 3], r) # try other cobinations r = utils.convert_to_integer_list('1, 2, 3') - self.assertEqual(['1', '2', '3'], r) + self.assertEqual([1, 2, 3], r) r = utils.convert_to_integer_list('1s,2df,3d/') - self.assertEqual(['1', '2', '3'], r) + self.assertEqual([1, 2, 3], r) r = utils.convert_to_integer_list([1, 3, 4]) self.assertEqual([1, 3, 4], r) + r = utils.convert_to_integer_list('1,11,10') + self.assertEqual([1, 11, 10], r) + + r = utils.convert_to_integer_list('1,11,10,QA') + self.assertEqual([1, 11, 10, 'QA'], r) + if __name__ == '__main__': unittest.main() diff --git a/landsat/utils.py b/landsat/utils.py index b5dc6e3..75e4442 100644 --- a/landsat/utils.py +++ b/landsat/utils.py @@ -268,13 +268,13 @@ def convert_to_integer_list(value): ['003', '003', '004', '004'] """ - - if value and isinstance(value, str): - if ',' in value: - value = re.sub('[^0-9,]', '', value) - new_list = value.split(',') - else: - new_list = re.findall('[0-9]', value) - return new_list if new_list else None - else: + if isinstance(value, list): return value + else: + s = re.findall('(10|11|QA|[0-9])', value) + for k, v in enumerate(s): + try: + s[k] = int(v) + except ValueError: + pass + return s