Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在运行时将文件中的每个段落读入多个列表_Python_File_List - Fatal编程技术网

Python 在运行时将文件中的每个段落读入多个列表

Python 在运行时将文件中的每个段落读入多个列表,python,file,list,Python,File,List,假设我有一个文件,比如 ID1 Some name Address Salary Gender ID2 Some name Address Salary Gender ... IDn 我已经阅读了文件,对其进行了排序,并将所有字段添加到一个列表中,如 [ID1 , name,Address,Salary,Gender,ID2,name,Address,Salart,Gender..] 我需要的是一份清单,上面写着 ID1= [name,address,Salary,

假设我有一个文件,比如

ID1


Some name

Address

Salary

Gender


ID2

Some name

Address

Salary

Gender

...

IDn
我已经阅读了文件,对其进行了排序,并将所有字段添加到一个列表中,如

[ID1 , name,Address,Salary,Gender,ID2,name,Address,Salart,Gender..]
我需要的是一份清单,上面写着

ID1= [name,address,Salary,Gender] ,
ID2 = [name,Address,salary,Gender]  and so on.

如果列表中已包含这些词典,则需要使用以下命令创建词典:

你最终会得到:

>>> the_list
['ID1', 'name1', 'address1', 'salary1', 'gender1', 'ID2', 'name2', 'address2',
'salary2', 'gender2']
>>> ids = {i[0]: i[1:] for i in grouper(the_list, 5)}
>>> ids
{'ID2': ('name2', 'address2', 'salary2', 'gender2'), 'ID1': ('name1', 'address1'
, 'salary1', 'gender1')}

您正在迭代的数据是一个文件对象。您可以对其应用所有技巧,将数据重新格式化为索引键
ID

所以你从发电机开始。此生成器将删除所有非空行。然后,您只需迭代这个生成器,并使用字典理解创建一个字典。使用将迭代器提升到一定程度,留下下一项作为键使用

实施

from itertools import imap, islice
with open("data") as fin:
    data = (line for line in imap(str.strip, fin) if line)
    data = {line: list(islice(data, 0, 4)) for line in data}
输出

print data
{'ID2': ['Some name', 'Address', 'Salary', 'Gender'], 'ID1': ['Some name', 'Address', 'Salary', 'Gender']}

如果是您正在创建的文件,我建议使用foramt,从该文件生成简单的dict结构将非常容易。@KobiK:让我试试看。!!
print data
{'ID2': ['Some name', 'Address', 'Salary', 'Gender'], 'ID1': ['Some name', 'Address', 'Salary', 'Gender']}