Python为Dict添加值,并根据不规则ID迭代添加

时间:2019-02-25 17:15:43

标签: python python-3.x python-3.7

问题是这样的。首先,我有一个保存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'

}

1 个答案:

答案 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))