我有许多 xml 文件,我会将它们转换为 JSON,然后将其加载到 openRefine 或 pandas 数据框中进行分析。xml文件看起来像
<NATURE_QUANTITY_SCOPE>
<TOTAL_QUANTITY_OR_SCOPE>
<P>Entreprisens omfang:</P>
<P>Arbeidet omfatter bl.a følgende:</P>
<P>• Ramming av stålrør</P>
<P>• Løsmassearbeider, graving over og under vann, erosjonssikring</P>
<P>• Forskalings-, armerings, og betongarbeider i stålrørspeler, kaipir og bru</P>
<P>• Elektroarbeider </P>
<P>Arbeidet består bl.a av levering og montering av:</P>
<P>• aggregathus</P>
<P>• pullere og T-pullere</P>
<P>• lodd til redningsleider</P>
<P>• dumperdekk</P>
<P>• aggregat og sylindere</P>
<P>• sperrebom</P>
<P>Videre består arbeidet bl.a av mottak og montering av: </P>
<P>• brulager inkl. fester til landkar, fendring </P>
<P>• heisetårn </P>
<P>• sikringsbjelke</P>
<P>• horisontale stålrør</P>
<P>• komplette fenderpanel med innstøpingsgods/kjetting/gummifendere etc.</P>
<P>• innstøpingsgods for dumperdekk</P>
<P>• innstøpingsgods for overgangsplate</P>
<P>• innstøpingsgods for horisontale stålrør</P>
<P>• alle bolter for innstøpingsgods/vemohylser/skruer etc.</P>
<P>• redningsleider</P>
<P>• rekkverk og port kai</P>
<P>• fotlist kai</P>
</TOTAL_QUANTITY_OR_SCOPE>
</NATURE_QUANTITY_SCOPE>
我试过这段代码
import xmltodict
import os
import json
path = r"C:\Users\ujorbjo00\Documents\xmltodict test"
for filename in os.listdir(path):
if not filename.endswith('.xml'):
continue
fullname = os.path.join(path, filename)
with open(fullname, 'r', encoding='utf_8') as f:
xmlString = f.read()
jsonString = json.dumps(xmltodict.parse(xmlString, encoding='utf-8',process_namespaces=True, xml_attribs=True))
with open(fullname[:-4] + ".json", 'w', encoding='utf_8') as f:
f.write(jsonString)
但 JSON 文件看起来像
"NATURE_QUANTITY_SCOPE": {
"TOTAL_QUANTITY_OR_SCOPE": {
"P": ["Entreprisens omfang:", "Arbeidet omfatter bl.a f\u00f8lgende:", "\u2022\tRamming av st\u00e5lr\u00f8r", "\u2022\tL\u00f8smassearbeider, graving over og under vann, erosjonssikring", "\u2022\tForskalings-, armerings, og betongarbeider i st\u00e5lr\u00f8rspeler, kaipir og bru", "\u2022\tElektroarbeider", "Arbeidet best\u00e5r bl.a av levering og montering av:", "\u2022\taggregathus", "\u2022\tpullere og T-pullere", "\u2022\tlodd til redningsleider", "\u2022\tdumperdekk", "\u2022\taggregat og sylindere", "\u2022\tsperrebom", "Videre best\u00e5r arbeidet bl.a av mottak og montering av:", "\u2022\tbrulager inkl. fester til landkar, fendring", "\u2022\theiset\u00e5rn", "\u2022\tsikringsbjelke", "\u2022\thorisontale st\u00e5lr\u00f8r", "\u2022\tkomplette fenderpanel med innst\u00f8pingsgods/kjetting/gummifendere etc.", "\u2022\tinnst\u00f8pingsgods for dumperdekk", "\u2022\tinnst\u00f8pingsgods for overgangsplate", "\u2022\tinnst\u00f8pingsgods for horisontale st\u00e5lr\u00f8r", "\u2022\talle bolter for innst\u00f8pingsgods/vemohylser/skruer etc.", "\u2022\tredningsleider", "\u2022\trekkverk og port kai", "\u2022\tfotlist kai"]
}
这是 26 行,没有挪威字符的编码!
_ - DOFFIN_ESENDERS - FORM_SECTION - CONTRACT - FD_CONTRACT - OBJECT_CONTRACT_INFORMATION - QUANTITY_SCOPE - NATURE_QUANTITY_SCOPE - TOTAL_QUANTITY_OR_SCOPE
_ - DOFFIN_ESENDERS - FORM_SECTION - CONTRACT - FD_CONTRACT - OBJECT_CONTRACT_INFORMATION - QUANTITY_SCOPE - NATURE_QUANTITY_SCOPE - TOTAL_QUANTITY_OR_SCOPE - P
_ - DOFFIN_ESENDERS - FORM_SECTION - CONTRACT - FD_CONTRACT - OBJECT_CONTRACT_INFORMATION - QUANTITY_SCOPE - NATURE_QUANTITY_SCOPE - TOTAL_QUANTITY_OR_SCOPE - P – P
我拥有一切
在一排