我正在尝试编写一个非常简单但模块化的脚本来重命名文件。
我想处理JSON文件的内容,但是,我坚持要返回一个键(对象?)的所有子值而不仅仅是一个。
到目前为止,我的测试代码看起来像这样:
import json
DB_dict = json.load(open("../source_code/db3.json", encoding='utf-8-sig'))
old_names_of_Book1 = DB_dict["Book1"]["Book1_section1"]["old_name"]
print(old_names_of_Book1)
print("________________________")
for key, values in DB_dict.items():
print(key)
print(values)
导入的db3.json的内容:
{
"Book1": {
"Book1_section1": {
"old_name": "Adventures of X1",
"new_name": "Adventures of Y1"
},
"Book1_section2": {
"old_name": "Adventures of X2",
"new_name": "Adventures of Y2"
},
"Book1_section3": {
"old_name": "Adventures of X3",
"new_name": "Adventures of Y3"
},
"Book1_section4": {
"old_name": "Adventures of X4",
"new_name": "Adventures of Y4"
}
},
"Book2": {
"Book2_section1": {
"old_name": "Adventures of X1",
"new_name": "Adventures of Y1"
},
"Book2_section2": {
"old_name": "Adventures of X2",
"new_name": "Adventures of Y2"
},
"Book2_section3": {
"old_name": "Adventures of X3",
"new_name": "Adventures of Y3"
},
"Book2_section4": {
"old_name": "Adventures of X4",
"new_name": "Adventures of Y4"
}
}
}
JSON文件中的Book1,Book2,Book x 键将在脚本中进行硬编码,因为我想根据用户输入使用分支语句重命名不同的文件。例如,如果用户选择Book1,则将每个old_name
值重命名为new_name
,但不要介意“部分”的出现次数。
(部分的数量(Book1_section1
)可能会随着时间的推移而改变,因此,我希望我的脚本能够在每次出现的部分上进行迭代。)
我的问题是,我不知道如何忽略我的JSON中的Book1_section1
,Book1_section2
等密钥并仅解析其内容。随着
print(DB_dict["Book1"]["Book1_section1"]["old_name"])
我可以获得我想要的价值,但我不知道如何获得所有价值。
答案 0 :(得分:1)
你应该尝试使用嵌套的dict遍历
for m,n in DB_dict.items():
if m == str("Book1"):
for x,y in n.items():
print(y["old_name"])