0

当我尝试将我的 xml 转换为 dict 时,我想删除一些字符:

data = xmltodict.parse(open('test.xml').read())

    with open('test2.json', "wt", encoding='utf-8', errors='ignore') as f:
        json.dump(data, f, indent=4, sort_keys=True)
        return data

问题实际上我有很多 json 文件,一些 json 文件是这样的:

{
        "pcrs:test A": {
            "pcrs:nature": "03", 
            "pcrs:producteur": "SIEML"
}}

还有一些像这样的json文件(没有pcrs):

{
        "test B": {
            "nature": "03", 
            "producteur": "SIEML",
}}

如何强制像第一个示例这样的任何文件不'pcrs:'作为第二个示例。

4

1 回答 1

1

那是一个命名空间前缀。因为您不包含示例 XML,所以我自己编写了一个。

<?xml version="1.0" encoding="UTF-8"?>
<root_elem xmlns:pcrs="http://the/pcrs/url">
<pcrs:subelem/>
</root_elem>

xmltodict允许您通过将命名空间 url 映射到不同的表示来管理命名空间。最值得注意的是,None将其完全删除。请参阅命名空间支持

在你的情况下,你可以做

data = xmltodict.parse(open('test.xml').read(),
    process_namespaces=True,
    namespaces={"http://the/pcrs/url":None})

用真实的命名空间 URL 替换http://the/pcrs/url.

于 2020-06-13T19:48:14.580 回答