我有一个文本文件,其中包含大约三十行:
F2(g)+2e–|2F–(aq)|+2.87
Co3+(aq)+e–|Co2+(aq)|+1.82
我在'|'处分割了行创建三个单独的列表,但是我想合并列表left
和right
并将压缩后的列表用作字典中的键,而将第三个列表用作值。这是我当前的代码:
infile = open('myfile.txt', 'r')
lines = infile.readlines()
infile.close()
data = {}
for line in lines[1:]:
left, right, value = line.rstrip('\n').split('|')
z = [str(x[0]) + x[1] for x in zip(left, right)]
data[z]=value
这不起作用。当我尝试将left
和right
压缩到z
时,会得到如下结果:
['F2', '2F', '(–', 'g(', ')a', '+q', '2)']
['CC', 'oo', '32', '++', '((', 'aa', 'qq', '))']
我要完成的是此输出:
{
'F2(g)+2e– 2F–(aq)': '+2.87',
'Co3+(aq)+e– Co2+(aq)': '+1.82'
}
答案 0 :(得分:0)
您没有列表,有字符串,因为您一次要处理输入文件中的一行。然后,您的错误是在zip()
和left
字符串上使用right
。您不想配对两个字符串的字符,只想连接字符串,并在它们之间留一个空格。
您可以使用+
或' '.join()
,或者对于两个值,请使用字符串格式:
for line in lines[1:]:
left, right, value = line.rstrip('\n').split('|')
z = f'{left} {right}'
data[z] = value