def test_parse(self): good = open(GOOD_CSV, 'r') bad = open(BAD_CSV, 'r') header = open(HEADER_ONLY_CSV, 'r') empty = open(EMPTY_CSV, 'r') blank = open(BLANK_CSV, 'r') result = parse_csv.parse(good) self.assertTrue(isinstance(result, list)) self.assertEqual(3, len(result)) self.assertTrue(isinstance(result[0], dict)) self.assertEqual(3, len(result[0])) self.assertRaises(ValueError, parse_csv.parse, header) self.assertRaises(Exception, parse_csv.parse, empty) # Just confirm that zip is producing the appropriately sized # dictionaries result = parse_csv.parse(bad) for item in result[:-1]: self.assertEqual(3, len(item)) self.assertEqual(2, len(result[3])) # Lets make sure it appropriately handles CSV's with blank values result = parse_csv.parse(blank) self.assertEqual(3, len(result)) for item in result: self.assertEqual(3, len(item))
will become a tag-value in FluidDB. The default version of this function in flimp will attempt to cast the value into something appropriate - see flimp.parser.csv_parser.clean_row_item for the source. """ # We just want to make sure we return None for empty values. By default # flimp will ignore tags with None as a value (this can be overridden) value = item.strip() if value: return value else: return None csv_file = open("data.csv", "r") data = parse_csv.parse(csv_file, clean_header, clean_row_item) """ Given the following CSV file: ' Header 1 ':'Header 2':'Header 3/4' A: B :C X::Z and the functions defined above then parse_csv.parse will produce something like this: [ { 'Header_3-4': 'C', 'Header_2': 'B',
The default version of this function in flimp will attempt to cast the value into something appropriate - see flimp.parser.csv_parser.clean_row_item for the source. """ # We just want to make sure we return None for empty values. By default # flimp will ignore tags with None as a value (this can be overridden) value = item.strip() if value: return value else: return None csv_file = open("data.csv", "r") data = parse_csv.parse(csv_file, clean_header, clean_row_item) """ Given the following CSV file: ' Header 1 ':'Header 2':'Header 3/4' A: B :C X::Z and the functions defined above then parse_csv.parse will produce something like this: [ { 'Header_3-4': 'C', 'Header_2': 'B', 'Header_1': 'A'