问题是这样的。首先,我有一个保存C语言枚举类型的文件。经过后处理并删除了注释和无用的信息后,它变成了这样的格式文件(当然,没有=符号的常量字符串也是处理的结果)
SC_ERROR_NETWORK = 00
SC_ERROR_TCP = 01
SC_ERROR_UDP= 02
CLIENT_ERROR_NETWORK = 1000
CLIENT_ERROR_TCP
CLIENT_ERROR_UDP
SERVER_ERROR_NETWORK = 6001
SERVER_ERROR_TCP = 6002
SERVER_ERROR_UDP
TEST_ERROR_TCP = 100001
TEST_ERROR_UDP
我想使用python将数据转换为json或dict类型的文件,有一个键值,然后,例如,下次我在下面的此文件中添加类型为SC_ERROR_UDP_TEST的新字符串时,他是基于SC_ERROR_UDP = 02,此值,然后执行循环,然后将SC_ERROR_UDP_TEST的值添加到03,将SC_ERROR_UDP_TEST2的值添加到04,依此类推。当遇到CLIENT_ERROR_NETWORK = 1000行时,会将CLIENT_ERROR_NETWORK的值(循环基数为1000)添加到CLIENT_ERROR_TCP。值是1001,CLIENT_ERROR_UDP是1002,并且遇到以下类型时,也会遇到相同的原因(总之,最后一个值用作循环的基础,因为我可能会在类型名称相同,但我不想。每次我手动转到指定的字典时,都有此要求。)此Python如何处理和编写代码?我很久没写成功了。
像这样完成处理后
{
'SC_ERROR_NETWORK':'00'
'SC_ERROR_TCP':'01'
'SC_ERROR_UDP':'02'
'CLIENT_ERROR_NETWORK':'1000'
'CLIENT_ERROR_TCP':'1001'
'CLIENT_ERROR_UDP':'1002 '
'SERVER_ERROR_NETWORK':'6001'
'SERVER_ERROR_TCP':'6002'
'SERVER_ERROR_UDP':'6003'
'TEST_ERROR_TCP':'100001'
'TEST_ERROR_UDP':'100002'
}
答案 0 :(得分:-1)
这是一个解决方案
d = {}
with open(in) as o:
for line in o:
tokens = line.strip().split(" = ")
if len(tokens) > 1:
d[tokens[0]] = tokens[1]
else:
d[tokens[0]] = "NaN"
with open(out) as o:
o.write(str(d))