首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python将特定键的值以逗号分隔。

python将特定键的值以逗号分隔。
EN

Stack Overflow用户
提问于 2018-10-01 10:02:43
回答 2查看 674关注 0票数 0

是否有一种方法可以组合由逗号分隔的特定键的多个值。在我的例子中,我试图打印多个service.names值,这样它们就可以用用逗号分隔的一行打印出来。

如何将用逗号分隔的service.name值组合起来,以便打印如下所示:

代码语言:javascript
复制
{
  "number": 1,
  "service name": "FTP-Server, SSH-Server"
}

我在下面的pyjq中尝试过,但是它通过一个完整的单独块来分隔值。

代码语言:javascript
复制
.group[].group[] | { "number": .number, "service name": .service[].name }

这是我得到的输出

代码语言:javascript
复制
{
  "number": 1,
  "service name": "FTP-Server"
}
{
  "number": 1,
  "service name": "SSH-Server"
}

在下面给出的相同数据中有/没有对象字典。我可以接受任何格式。

启用对象字典的JSON文件

代码语言:javascript
复制
{
    "objects-dictionary": [
        {
            "name": "FTP-Server", 
            "port": "21", 
            "type": "service-tcp", 
            "uid": "ef245528-9a3d-11d6-9eaa-3e5a6fdd6a6a"
        }, 
        {
            "name": "SSH-Server", 
            "port": "22", 
            "type": "service-tcp", 
            "uid": "dff4f7ba-9a3d-11d6-91c1-3e5a6fdd5151"
        }
    ], 
    "base": [
        {
           "number": 1, 
            "service": [
                "ef245528-9a3d-11d6-9eaa-3e5a6fdd6a6a",
                "dff4f7ba-9a3d-11d6-91c1-3e5a6fdd5151"
            ],
            "uid": "90088436-ac42-4363-84a6-3dbebf3c11f0"
        }
    ]
}

没有对象字典的JSON文件

代码语言:javascript
复制
{
    "group": [
        {
            "group": [
                { 
                    "number": 1, 
                    "service": [
                        {
                            "name": "FTP-Server", 
                            "port": "21", 
                            "type": "service-tcp", 
                            "uid": "ef245528-9a3d-11d6-9eaa-3e5a6fdd6a6a"
                        }, 
                        {
                            "name": "SSH-Server", 
                            "port": "22", 
                            "type": "service-tcp", 
                            "uid": "dff4f7ba-9a3d-11d6-91c1-3e5a6fdd5151"
                        }
                    ], 
                    "uid": "90088436-ac42-4363-84a6-3dbebf3c11f0"
                }
            ]
        }
    ]
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-01 11:19:50

目前还不清楚您期望的输出是什么,但考虑到最后一个示例并使用jq,您可以将两个服务名称连接在一起:

代码语言:javascript
复制
<file jq '[.group[].group[].service[].name] | join(",")'

注意,join需要一个数组,所以name需要在数组[ ... ]中。

如果需要在对象本身中添加此字符串,则可以执行以下操作:

代码语言:javascript
复制
<file jq '.service.name=([.group[].group[].service[].name] | join(","))'
票数 1
EN

Stack Overflow用户

发布于 2018-10-01 13:33:22

对于第二个JSON文本,以下过滤器:

代码语言:javascript
复制
.group[].group[]
| { "number": .number, "service name": ([.service[].name]|join(", ")) }

产生您所期望的输出(包括逗号后面的空格):

代码语言:javascript
复制
{
  "number": 1,
  "service name": "FTP-Server, SSH-Server"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52588722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档