python - 如何使用python修改JSON文件中的多个值
问题描述
我正在尝试修改我的 JSON 文件,其中我需要将 file_name 替换为基本路径,如下所示:
data = {"images": [
{
"id": 1,
"file_name": "Folder1/Folder2/Folder3/Folder4/1110.jpg",
"height": 3024,
"width": 4032
},
{
"id": 2,
"file_name": "Folder1/Folder2/Folder3/Folder4/1111.jpg",
"height": 3024,
"width": 4032
},
{
"id": 3,
"file_name": "Folder1/Folder2/Folder3/Folder4/1112.jpg",
"height": 3024,
"width": 4032
}
]}
这是我尝试过的代码
data = json.load(open(".\example.json"))
首先,我使用以下代码检查了完整的文件名
for img in data['images']:
print(img["file_name"])
以下是此单元格的输出
Folder1/Folder2/Folder3/Folder4/1110.jpg
Folder1/Folder2/Folder3/Folder4/1110.jpg
Folder1/Folder2/Folder3/Folder4/1110.jpg
然后我修改它以获得如下的基本路径
for feature in data['images']:
feature['file_name'] = os.path.basename(feature["file_name"])
print(feature['file_name'])
这是输出:
1110.jpg
1111.jpg
1112.jpg
当我试图将其转储到 JSON 文件中但我只得到一个文件名时。
data = {1110.jpg}
我想得到如下输出。请帮助我输入您的信息
data = {"images": [
{
"id": 1,
"file_name": "1110.jpg",
"height": 3024,
"width": 4032
},
{
"id": 2,
"file_name": "1111.jpg",
"height": 3024,
"width": 4032
},
{
"id": 3,
"file_name": "1112.jpg",
"height": 3024,
"width": 4032
}
]}
解决方案
问题在这一行for feature in temp['images']:
,请将其更改为for feature in data['images']
for feature in data['images']:
feature['file_name'] = os.path.basename(feature["file_name"])
print(data)
[{'file_name': '1110.jpg', 'height': 3024, 'id': 1, 'width': 4032},
{'file_name': '1111.jpg', 'height': 3024, 'id': 2, 'width': 4032},
{'file_name': '1112.jpg', 'height': 3024, 'id': 3, 'width': 4032}]
推荐阅读
- css - 从 Thymeleaf 中的模型对象设置 CSS 变量
- python - 刮空输出
- java - 同一对象根据线程 Java 保持不同的状态
- python - 无法创建 topotest-frr 的 docker 容器
- python - 将 ffmpeg 与文件块一起使用
- python - 通过 Python 的 SQL 查询返回的结果与直接 SQL 查询不同。为什么?
- python - 将列表值与查询集字段进行比较
- data-structures - 哪些图算法更喜欢邻接矩阵,为什么?
- ruby-on-rails - 使用 SendGrid 和抄送作为常见的批量电子邮件发送
- python - 熊猫拆分和连接列表结果