How to handle recursion in python? -
sketched small function on examples internet, there problems recursion ...
def tosimplexml(data, wrap = false): result = list() input_data_type = type(data) if input_data_type list: sub_element in data: result.append(tosimplexml(sub_element)) return ''.join(result) elif input_data_type dict: tag_name in data: sub_element = data[tag_name] result.append('<%s>' % tag_name) result.append(tosimplexml(sub_element)) result.append('</%s>' % tag_name) return ''.join(result) if wrap: return '<%s>%s</%s>' % (wrap, data, wrap) return data data = [{'element_1': 'value_1'}, {'element_2': {'element_2_1': 'value_2_1'}}, {'element_1': 'value_1'}] print tosimplexml(data, 'root') by idea result should wrapped root, wrap variable false...
the function returns too early wrap come play. set data instead of returning:
def tosimplexml(data, wrap = false): result = list() input_data_type = type(data) if input_data_type list: sub_element in data: result.append(tosimplexml(sub_element)) data = ''.join(result) elif input_data_type dict: tag_name in data: sub_element = data[tag_name] result.append('<%s>' % tag_name) result.append(tosimplexml(sub_element)) result.append('</%s>' % tag_name) data = ''.join(result) if wrap: return '<%s>%s</%s>' % (wrap, data, wrap) return data now if wrap statement reached:
>>> print tosimplexml(data, 'root') <root><element_1>value_1</element_1><element_2><element_2_1>value_2_1</element_2_1></element_2><element_1>value_1</element_1></root>
Comments
Post a Comment