def func_ET_find_item_from_node(self, node, str_find): try: if os.path.split(str_find)[1][0]=='@': result_t = node.find(os.path.split(str_find)[0]).get(os.path.split(str_find)[1][1:]) else: # tt = a.find(b1).text result_tt = node.find(str_find) # tt_a = a.find(b1, root.nsmap) result_t=''.join(result_tt.itertext()) # tt=''.join(tt_a.itertext()).strip() # tt = a.find(b1).text() #NOK! # tt = a.find(b1).get_text()#get_text()能去除标签 NOK!!! except: result_t = '--' return result_t
时间: 2023-05-22 07:06:49 浏览: 137
这是一个Python函数,名为func_ET_find_item_from_node。它的作用是从给定的节点(node)中查找指定的字符串(str_find)。函数会先判断该字符串是否以@符号开头,如果是,则通过节点找到该字符串(去掉@符号),否则直接在节点中查找该字符串。如果找到了,函数会返回结果(result_t)。如果没找到,则会抛出异常。
相关问题
def func_parse_find_by_dict(self, root, dict_find): list_result=[] if 'dict_L2_find' in dict_find.keys(): List_node_L1 = self.func_ET_find_node_from_parent_node(root, dict_find, 'str_L1_findall', 'str_L1_find') list_L2_find_current = dict_find['dict_L2_find']['list_current'] for node_L1 in List_node_L1: list_L2_current_result = [self.func_ET_find_item_from_node(node_L1, str_t) for str_t in list_L2_find_current] # list_L2_L3_current_result = list_L2_current_result if 'dict_L3_find' in dict_find.keys(): List_node_L2 = self.func_ET_find_node_from_parent_node(node_L1, dict_find['dict_L2_find'], 'str_next_findall', 'str_next_find') list_L3_find_current = dict_find['dict_L3_find']['list_current'] if List_node_L2 == []: list_L3_current_result = ['--' for str_t in list_L3_find_current] list_result.append(list_L2_current_result + list_L3_current_result) else: for node_L2 in List_node_L2: list_L3_current_result = [self.func_ET_find_item_from_node(node_L2, str_t) for str_t in list_L3_find_current] if 'dict_L4_find' in dict_find.keys(): List_node_L3 = self.func_ET_find_node_from_parent_node(node_L2, dict_find['dict_L3_find'], 'str_next_findall', 'str_next_find') list_L4_find_current = dict_find['dict_L4_find']['list_current'] if List_node_L3 == []: list_L4_current_result = ['--' for str_t in list_L4_find_current] list_result.append(list_L2_current_result + list_L3_current_result + list_L4_current_result) else: for node_L3 in List_node_L3: list_L4_current_result = [self.func_ET_find_item_from_node(node_L3, str_t) for str_t in list_L4_find_current] list_result.append(list_L2_current_result + list_L3_current_result + list_L4_current_result) else: list_result.append(list_L2_current_result + list_L3_current_result) else: list_result.append(list_L2_current_result) list_result_key=[] if 'dict_L2_find' in dict_find.keys(): list_result_key = list(map(os.path.basename, dict_find['dict_L2_find']['list_current'])) if 'dict_L3_find' in dict_find.keys(): list_result_key += list(map(os.path.basename, dict_find['dict_L3_find']['list_current'])) if 'dict_L4_find' in dict_find.keys(): list_result_key += list(map(os.path.basename, dict_find['dict_L4_find']['list_current'])) return list_result,list_result_key
这段代码是一个函数,函数名为"func_parse_find_by_dict",他接受两个参数:一个是XML的根节点,一个是要查找的字典。函数的作用是从根节点开始查找符合字典中描述的要求的节点,并返回一个结果列表。
如果字典中包含键"dict_L2_find",则会先查找一级节点,然后再在一级节点下查找二级节点。函数会调用另外两个函数来完成这个任务,具体细节不在本段代码中体现。在找到符合要求的节点后,函数会根据字典中给出的要求提取节点中的内容,并将结果添加到一个结果列表中。
def func_ET_find_node_from_parent_node(self, node_parent, dict_input, str_findall='', str_find=''): if str_findall in dict_input.keys(): list_node = node_parent.findall(dict_input[str_findall]) elif str_find in dict_input.keys(): list_node = node_parent.find(dict_input[str_find]) else: list_node = [] return list_node
这是一段 Python 代码,其中定义了一个名为 func_ET_find_node_from_parent_node 的函数,该函数根据传入的参数从父节点中查找子节点。如果在传入的字典中找到了指定的 str_findall 或 str_find,就返回包含符合条件的节点的列表,否则返回一个空列表。
阅读全文