读取文本文件以创建列表,然后转换为字典python



我正在使用

读取文本文件
source= open(curr_file,"r")
lines= source.readlines()

这将我的文本文件中的每一行转换为一个列表,但是我的列表中的一些项目是用双引号创建的,而另一些项目是用单引号创建的,如下所示。

['[INFO] Name: Xxxx, section: yyyy, time: 21.2, status: 0n', "proof:proof1,table: db.table_name,columns:['column_1'],count:10,status:SUCCESSn",'run time: 30 secondsn']

list中的第一项用单引号创建,第二项用双引号创建。

当尝试将上面的转换为字典

new_line= dict(x.split(":"),1) for x in line.split(","))

它给了我一个值error

Value error: dictionary update sequence element has length 1; 2 is required

上面的错误是因为它将双引号下的整个字符串视为单个值,并且无法将其转换为字典。

是否有办法将其转换为单引号而不是双引号?我试过用replace, strip。

预期输出:{名称:Xxxx,部分:yyyy,时间:21.2,证明:proof1表:db.table_name状态:成功}

引号与错误无关。每行的外部引号不是str对象的一部分。它们只会被打印出来,你知道它是一个str。单引号被切换为双引号,因为内容中有单引号,那么单引号不能用来分隔str。但是,这只是打印内容的变化,而不是存储在内存中的内容。

尝试分步执行并打印调试程序所需的中间对象。

for x in line: #prints nicer than print(line)
print(x)
arg = [x.split(":",1) for x in line.split(",")]
for x in arg:    
print(x)
new_line = dict(arg)

你应该得到包含两个元素的元组

要将一行(str)转换为字典,可以使用字典推导:

new_line = dict(x.split(":",1) for x in line.split()

相关内容

最新更新