def flatten_and_unicode(data): result = dict() for subinfo in data: for (key, value) in subinfo.items(): if isinstance(value, bytes): try: unicode_value = UnicodeDammit(value).unicode_markup.strip() except Exception as e: continue if unicode_value != '': result[key] = unicode_value elif isinstance(value, list): unicode_value = [] if (all(map(lambda subval: isinstance(value, bytes), value))): for subval in value: try: unicode_subval = UnicodeDammit(subval).unicode_markup.strip() if unicode_subval != '': unicode_value.append(unicode_subval) except Exception as e: pass if len(unicode_value) > 0: result[key] = unicode_value # else: # print(f"Subinfo with an unknown type {value}") return result