我将逐行读取python中的文件,并将该行转换为字典。该行的结构有点复杂,我不知道如何在字典中转换它。以下是我文件第一行的示例:
int main(int argc, char * argv[])
{
double final[col][col];
double transarray[col][value];
run(final,transarray,finalmidd);
}
void run(double hold[col][col],double transarray[col][value],double finalmidd[col][value])
{
double one;
int i;
int j;
int k;
for(i = 0; i < col ; i++)
{
for( j = 0; j < value ; j++)
{
one = 0;
for( k = 0; k < col; k++)
one+= hold[i][k] *transarray[k][j];
finalmidd[i][j]=one;
}
}
}
我想阅读第一行并将其保存在字典中,以便可以使用OrderedDict([('key', 'my_key'), ('rank', '2'), ('origin', 'IR'), ('num', '10'), ('num_2', '220'), ('same_array', ['a','b','d']), ('dif_array', ['g','h']), ('first_dic', OrderedDict([('name','ali'),('last','ali')])), ('num_', 0), ('response', OrderedDict([('ok_1', 0), ('red', 0), ('bad', 0)])), ('response_code', OrderedDict([('ok', 0), ('red', 0), ('bad', 0)]))])
这样的命令,我想要print my_dictionary['key']
。
这是一个非常复杂的文件,正如您所看到的,每行中都有一些内部数组和字典。我试图使用一些命令,如my_key
或new_line = dict(item.split("=") for item in line.split(","))
,但我得到错误,因为例如对于第一个命令,因为内部数组中有这么多new_line = ast.literal_eval(line)
,我没有得到很好地分离了主字典项或第二个命令我得到了这个错误:
,
答案 0 :(得分:0)
eval
这行了,但是这部分格式不正确:'innerarray: ['one', 'two']
你甚至可以通过突出显示代码来判断{{1}后是否有撇号丢失}}
如果文件是由脚本创建的,则可能意味着其他行中存在类似的错误,但如果文件是手工制作的,则可能是唯一的错误,也可能是导致此错误的任意数量的错误组合发生
我建议分享这个文件是如何创建的(因为它的创建出了问题)或者只是手动修复文件