首页 > 解决方案 > 将文件中的数据读入字典

问题描述

假设我有一个包含每一行信息的文件,并且每一行我想在字典中转换。在字典中将有一个字符串、两个整数和两个列表。有点像这样: Q1 = { "string" : "name", "integer1" : 1, "integer2" : 2, "list1" : [a,b,c,d], "list2": [] } 现在文件可以是 txt 文件,也可以不是。假设它是一个 txt 文件,每一行都会提供一个字典。我是编写文件的人,所以我可以以任何我想要的格式拥有它。我以为file.txt的每一行都是这种格式:name,1,2,(a/b/c), () 所以第一件事是字符串,第二件事是integer1,然后是integer2,list1和list2。字典的每个元素用逗号分隔,列表中的元素在括号内并用斜杠(“/”)分隔。显然,如果您认为 file.txt 应该如何有更好的主意,请告诉我 :) 我希望它是动态的第一个列表。这意味着某些行可能在括号 () 内包含更多字符,而第二个列表我希望它始终为空,因为我稍后在我的代码中将内容放在那里。每行都是一个字典,每个字典都是我要创建的列表中的一个元素。所以我想要一个字典列表。这意味着某些行可能在括号 () 内包含更多字符,而第二个列表我希望它始终为空,因为我稍后在我的代码中将内容放在那里。每行都是一个字典,每个字典都是我要创建的列表中的一个元素。所以我想要一个字典列表。这意味着某些行可能在括号 () 内包含更多字符,而第二个列表我希望它始终为空,因为我稍后在我的代码中将内容放在那里。每行都是一个字典,每个字典都是我要创建的列表中的一个元素。所以我想要一个字典列表。

我试图打开一个文件并使用拆分功能,但 txt 文件的格式比我想象的要复杂,并且从来没有读取文件并将其保存到字典列表中

#the file.txt should look like this:
name1,5,6,(a1/a2/a3), ()
name2,7,8,(a2/a3/a4/a5), ()

#the python code i tried:
def init():
    myList=[]
    with open("file.txt") as f:
        for line in f:
            d={}
            d = dict(line.strip().split(',', 4))
            myList[line]=d
return(myList)        

list=[]
list=init();

标签: python

解决方案


检查这个......不使用任何包。

with open("test.txt") as f:
  lines = [ line.strip().split(",") for line in f ]
  lines = [{ 
        "string": line[0], 
        "integer1": int(line[1]), 
        "integer2": int(line[2]), 
        "list1": [l for l in line[3].strip("()").split("/")],
        "list2": [l for l in line[4].strip("()").split("/")],
  } for line in lines ]
  print(lines)

推荐阅读