我遵循ElementTree教程,在使用那里提供的样例XML时得到的结果基本相同,但在使用自己的XML文件时却得到了意想不到的结果。
例如,我试图从所有名为marketCode的XML标记中提取文本。我的示例XML文件:
<process_config>
<input name="dataIn">
<filePattern>
<marketCode>nyse</marketCode>
<midfix/>
<format>csv</format>
</filePattern>
</input>
<input name="brokerIn">
<filePattern>
<marketCode>lse</marketCode>
<midfix>.CBOENL</midfix>
<format>csv</format>
</filePattern>
</input>
</process_config>我使用以下代码提取数据:
import xml.etree.ElementTree as ET, sys, os
my_file = 'test.xml'
tree = ET.parse(my_file)
root = tree.getroot()
for filePattern in root.findall('filePattern'):
marketCode = filePattern.find('marketCode').text
print(marketCode)当我运行上面的代码时,我得到一个空的输出。预期产出如下:
nyse
lse代码可能有什么问题?
发布于 2021-04-14 14:06:52
filePattern不是根元素的直接子元素。
这是可行的:root.findall('.//filePattern')。这也适用于:root.findall('input/filePattern')。
https://stackoverflow.com/questions/67046470
复制相似问题