【发布时间】:2019-06-23 03:08:30
【问题描述】:
我查看了一堆类似的问题,但没有找到专门解决此问题的答案。我以前没有在 python 中使用过 XML 文件,而且时间紧迫,所以我可能只是忽略了显而易见的事情。对于文件中的每个提供程序记录,我有一堆 XML 文件,我只需要从中获取两个值。我需要将它们保存在 csv 中。
我有一些代码超出了我的预期......
import xml.etree.ElementTree as ET
import csv
tree = ET.parse('xml/HSP-FullOutOfAreaSite03-DEC.xml')
root = tree.getroot()
for PROVIDER in root.iter('PROVIDER'):
for PROV_IDENTIFIER in PROVIDER:
print(PROV_IDENTIFIER.text)
for TAXONOMY_CODE in PROVIDER:
print(TAXONOMY_CODE.text)
XML 有一堆重复的 PROVIDER_GROUP,对于所有提供者组中的每个提供者,我需要提供者的 PROV_IDENTIFIER 和 TAXONOMY_CODE。
<PROVIDER_GROUP>
<MASTER_GROUP_CODE>345093845</MASTER_GROUP_CODE>
<TAX_ID>3095</TAX_ID>
<GROUPNUMBER>16</GROUPNUMBER>
<SITECOUNT>1</SITECOUNT>
<CONTRACTS>
<CONTRACT>
<EFF_DATE>2002-01-01</EFF_DATE>
</CONTRACT>
</CONTRACTS>
<PROVIDER_SITES>
<PROVIDER_SITE>
<PROV_MASTER_ID>18583783745</PROV_MASTER_ID>
<MASTER_GROUP_CODE>584293845</MASTER_GROUP_CODE>
<PROVIDERS>
<PROVIDER>
<PROVNO>123456</PROVNO>
<NAME_FIRST>John</NAME_FIRST>
<NAME_LAST>Doe</NAME_LAST>
<NAME_CREDENTIAL>DDD</NAME_CREDENTIAL>
<GENDER>M</GENDER>
<PROV_IDENTIFIER>3459832385</PROV_IDENTIFIER>
<TAXONOMIES>
<TAXONOMY>
<TAXONOMY_CODE>23498R98239X</TAXONOMY_CODE>
</TAXONOMY>
</TAXONOMIES>
<HOSPRELATIONS>
<HOSP>
<NPI>1366896300</NPI>
</HOSP>
</HOSPRELATIONS>
</PROVIDER>
<PROVIDER>
<PROVNO>123454</PROVNO>
<NAME_FIRST>Jane</NAME_FIRST>
<NAME_LAST>Doe</NAME_LAST>
<NAME_CREDENTIAL>DDD</NAME_CREDENTIAL>
<GENDER>F</GENDER>
<PROV_IDENTIFIER>3945092358</PROV_IDENTIFIER>
<TAXONOMIES>
<TAXONOMY>
<TAXONOMY_CODE>55598R98239X</TAXONOMY_CODE>
</TAXONOMY>
</TAXONOMIES>
<HOSPRELATIONS>
<HOSP>
<NPI>34598345030</NPI>
</HOSP>
</HOSPRELATIONS>
</PROVIDER>
</PROVIDERS>
</PROVIDER_SITE>
</PROVIDER_SITES>
</PROVIDER_GROUP>
<PROVIDER_GROUP>
<PROVIDER_SITES>
<PROVIDER_SITE>
<PROVIDERS>
<!-- MORE PROVIDERS -->
</PROVIDERS>
</PROVIDER_SITE>
</PROVIDER_SITES>
</PROVIDER_GROUP>
我需要一个看起来像这样的 CSV:
PROV_IDENTIFIER | TAXONOMY_CODE
---------------------------------
210985345098 | 234R345359X
310495345091 | 456R345359X
534581039568 | 567R345359X
802869458327 | 234R345359X
【问题讨论】: