正如Daniel Pryden在评论中提到的,数据是不同的。第一个bin的某些部分引用为字符串,而第二个bin是标准JSON。
我首先想出了一种方法来对这两个不同的文件进行分类。我发现完整的JSON是手动生成的默认值,而部分字符串是从配置文件生成的。
因此,我在配置文件中添加了一个“config”标志,
["PLANETARY", "Naboo", "{'Optimal': [], 'Default': ['B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids', 'B1 Battle Droids']}", "{'B1 Battle Droids': 100}", "config"]
以及默认文件的“手动”标志,
["PLANETARY", "Kamino", {"Optimal": ["Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids", "Aqua Droids"], "Default": ["B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids", "B1 Battle Droids"]}, {"Aqua Droids": 60, "B1 Battle Droids": 40}, "manual"]
然后,我使用以下代码来识别配置文件,其中一个使用了该标志,并执行
ast.literal_eval
文件中的字符串部分。如果使用手动文件,则跳过该文件,并按原样使用标准JSON。
import ast
try:
with open('saves/temp/data.bin', 'r') as file:
confirmed_data = json.load(file)
except:
pass
confirmed_mode = confirmed_data[0]
confirmed_location = confirmed_data[1]
if confirmed_data[4] == 'config':
confirmed_units_data = confirmed_data[2]
confirmed_units = ast.literal_eval(confirmed_units_data)
confirmed_unit_quantities_data = confirmed_data[3]
confirmed_unit_quantities = ast.literal_eval(confirmed_unit_quantities_data)
else:
confirmed_units = confirmed_data[2]
confirmed_unit_quantities = confirmed_data[3]