我正在为 Stellaris 游戏编写配置文件管理器,并且我已经使用他们保存有关 mod 和设置的信息的格式碰壁了。
模组文件:
name="! (Ship Designer UI Fix) !"
path="mod/ship_designer_ui_fix"
tags={
"Fixes"
}
remote_file_id="879973318"
supported_version="1.6"
设置:
language="l_english"
graphics={
size={
x=1920
y=1200
}
min_gui={
x=1920
y=1200
}
gui_scale=1.000000
gui_safe_ratio=1.000000
refreshRate=59
fullScreen=no
borderless=no
display_index=0
shadowSize=2048
multi_sampling=8
maxanisotropy=16
gamma=50.000000
vsync=yes
}
last_mods={
"mod/ship_designer_ui_fix.mod"
"mod/ugc_720237457.mod"
"mod/ugc_775944333.mod"
}
我认为pyparsing
那里会有所帮助(并且可能会),但是自从我实际上做了这样的事情以来已经很长时间了,而我对此一无所知。
我必须提取简单的key=value
但我正在努力从那里实际移动以便能够提取数组,更不用说多级数组了。
lbrack = Literal("{").suppress()
rbrack = Literal("}").suppress()
equals = Literal("=").suppress()
nonequals = "".join([c for c in printables if c != "="]) + " \t"
keydef = ~lbrack + Word(nonequals) + equals + restOfLine
conf = Dict( ZeroOrMore( Group(keydef) ) )
tokens = conf.parseString(data)
如你所见,我还没有走多远。谁能指出我下一步?我并不是要为整个事情提供一个完整且可行的解决方案——它会让我前进很多,但其中的乐趣在哪里:)