python - python组合以逗号分隔的特定键的值
问题描述
有没有一种方法可以组合以逗号分隔的特定键的多个值。在我的情况下,我正在尝试打印多个service.names
值,以便它们可以打印在以逗号分隔的单行中。
如何组合service.name
以逗号分隔的值,以便它们打印如下:
{
"number": 1,
"service name": "FTP-Server, SSH-Server"
}
我在 pyjq 中尝试过,但它通过一个完整的单独块分隔值。
.group[].group[] | { "number": .number, "service name": .service[].name }
这是我得到的输出
{
"number": 1,
"service name": "FTP-Server"
}
{
"number": 1,
"service name": "SSH-Server"
}
下面给出了带有/不带有对象字典的相同数据。我可以接受任何格式。
启用了对象字典的 JSON 文件
{
"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 文件
{
"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"
}
]
}
]
}
解决方案
目前还不清楚您期望的输出是什么,但是鉴于您的最后一个示例并使用jq
您可以将两个服务名称连接在一起:
<file jq '[.group[].group[].service[].name] | join(",")'
请注意,它join
需要一个数组,因此name
s 需要在一个数组内[ ... ]
。
如果您需要在对象本身中添加此字符串,您可以执行以下操作:
<file jq '.service.name=([.group[].group[].service[].name] | join(","))'
推荐阅读
- python - 在列表中查找具有重复项的“n”个不同元素,== 可以,=== 不行
- c# - 如何使用 C# 使用记事本打开 .txt 文件
- javascript - 如何添加 HTML 附加 javascript...“引号”问题
- apache-spark - Spark EMR 作业失败:原因:org.apache.spark.memory.SparkOutOfMemoryError: Unable to acquire 16384 bytes of memory, got 0
- c# - 带有包含空格和“/”的字符串的 Http 请求
- react-native - 如何在 react-native 中使用加速度计传感器找到方向?
- r - R:使用 id 和记录频率创建新的数据框
- active-directory - 如何修复具有静态 IP 地址的域网络上的“未识别网络”?
- r - 使用参考列总结数据框
- java - JFLEX 是否有替代 \b 和/或负前瞻的方法?