下面的代码片段循环遍历几个xml文件,并从每个字典中提取3个“列”。 xml中的一个具有名为“ IndexName”而不是“ IndexID”的稍有不同的第一个字段。如何摆脱单个字段列表(如
)的困扰var arrN = [
[{ id: 'A1', start: '2018-01-01' }, { id: 'A2', start: '2018-01-01' }], // 0
[{ id: 'B1', start: '2018-01-02' }, { id: 'B2', start: '2018-01-02' }], // 1
[{ id: 'C1', start: '2018-01-03' }, { id: 'C2', start: '2018-01-03' }] // 2 <<<Want this index which should be 2
];
var date = '2018-01-03';
// if each element of sub-array do not have same date
arrN.forEach(function(element, index) {
element.some(function(obj){
return obj.start == date
}) ? console.log(index) : '';
});
查找部分匹配项:
field_list = ['Index*', 'CompositeSpread', 'CompositePrice',]
答案 0 :(得分:0)
我想出的解决方案是同时使用'IndexID'
中的'IndexName'
和field_list
字段,然后在列表理解中检查if el.find(x) is not None
:
import xml.etree.ElementTree as ET
strXpath = "./row"
field_list = ['IndexName', 'IndexID', 'CompositeSpread', 'CompositePrice',]
tree = ET.parse(file_path)
root = tree.getroot()
value_list = []
for el in root.findall(strXpath):
value_list.append([el.find(x).text for x in field_list if el.find(x) is not None])