python - Python从JSON读取逗号分隔列表
问题描述
我在 python 脚本中给出了以下 JSON 结构:
print("Producers: ", metadata['plist']['dict']['array'][2]['dict']['string'])
问题是我在该字段上没有一个条目,而是有多个条目。另请在此处查看 RAW JSON:https ://pastebin.com/rtTgmwvn
如何将这些条目作为逗号分隔的字符串提取到 [2] 的生产者字段中?
提前致谢
解决方案
您快到了:
你可以做这样的事情
print("Producers: ", ", ".join(i["string"] for i in metadata['plist']['dict']['array'][2]['dict'])
分解解决方案......您"dict"
在 JSON 中的元素实际上是一个list
“ dict
”,因此您可以简单地迭代这个list
:
metadata['plist']['dict']['array'][2]['dict']
dict
其中每个元素都是带有"string"
键的实际元素。
更新
JSON 的格式在某些情况下是一个列表,在某些情况下是单个元素。在这种情况下,我建议编写一个小函数或使用if
处理每种情况的语句:
def get_csv(element):
if isinstance(element, dict):
return element["string"]
return ", ".join(i["string"] for i in element)
# and you would use it like so:
print("Producers: ", get_csv(metadata['plist']['dict']['array'][2]['dict']))
推荐阅读
- sql - 如何编写 JOIN 条件(使用 USING 子句)
- jquery - 将更新操作链接到 jquery 对话框的关闭按钮
- c++ - C++ 指针数组
- javascript - Nginx,Sub_filter,javascipt,替换包含$的字符串
- javascript - 其他条件在 javascript 中不起作用
- amazon-web-services - 为什么将 `kubectl` 与模拟 (`--as=`) 一起使用会导致错误:“与服务器 localhost:8080 的连接被拒绝”?
- kotlin-coroutines - Kotlin Coroutines 从作用域中移除异常处理程序
- javascript - 我需要将处理程序道具传递给子组件吗?
- android - 更新 Recycler 视图之外的视图以更改回收器视图项
- excel - Excel VBA 如何比较两个大型数据集中的值与质量缺陷/错误?