Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Dictionary - Fatal编程技术网

Python 读取文件,匹配字符串(标题)并在每个标题下保存块

Python 读取文件,匹配字符串(标题)并在每个标题下保存块,python,list,dictionary,Python,List,Dictionary,我知道如何在python中逐行读取文件,如果需要,匹配大小写并将信息保存在字典中。但是现在我有一个像这样的txt文件 Head 1 bla1 bla2 bla3 Head 2 blo 1 blo 2 blo 3 blo 4 Head 3 blu 1 blu 2 head 1 : {bla 1,bla 2, bla 3}, head 2 : {blo 1, blo 2, blo 3, blo 4}, head 3 :{blu 1 , blu 2} head 1 : {bla 1,

我知道如何在python中逐行读取文件,如果需要,匹配大小写并将信息保存在字典中。但是现在我有一个像这样的txt文件

Head 1 

bla1
bla2
bla3

Head 2

blo 1
blo 2
blo 3
blo 4

Head 3

blu 1
blu 2
head 1 : {bla 1,bla 2, bla 3}, head 2 : {blo 1, blo 2, blo 3, blo 4}, head 3 :{blu 1 , blu 2}
head 1 : {bla 1, blu 2, blo 3}, head 2 : {bla 1, bla 2, blo 3, blo 4}, head 3 :{blu 1 , blo 2}
我需要保存属于每个头X的信息,例如

Head 1 

bla1
bla2
bla3

Head 2

blo 1
blo 2
blo 3
blo 4

Head 3

blu 1
blu 2
head 1 : {bla 1,bla 2, bla 3}, head 2 : {blo 1, blo 2, blo 3, blo 4}, head 3 :{blu 1 , blu 2}
head 1 : {bla 1, blu 2, blo 3}, head 2 : {bla 1, bla 2, blo 3, blo 4}, head 3 :{blu 1 , blo 2}
或者类似的

我的一次尝试

for line in open('file.txt'):
block_dict = {}
block = []
ck_nm = [blk_nm for blk_nm in data if line.startswith(blk_nm)]
if ck_nm:
    block_dict[ck_nm[0]] = block = [] 

else:
    block.append(line)
但它只返回大量空列表。 我还试图通过匹配文件中的head X和take列来制作一个字典,但由于它们没有排序,所以它会返回类似这样的结果

Head 1 

bla1
bla2
bla3

Head 2

blo 1
blo 2
blo 3
blo 4

Head 3

blu 1
blu 2
head 1 : {bla 1,bla 2, bla 3}, head 2 : {blo 1, blo 2, blo 3, blo 4}, head 3 :{blu 1 , blu 2}
head 1 : {bla 1, blu 2, blo 3}, head 2 : {bla 1, bla 2, blo 3, blo 4}, head 3 :{blu 1 , blo 2}

是的,很多,我想添加我的脚本,但我不知道这是否可行,我在问题中添加了其中一个我一直在尝试使用这个,但由于我实际上正在阅读一个文本文件,甚至我将其转换为字符串,我无法使用这个答案(我认为这是正确的答案)我想由于头X和下一个字符串之间的空格(我编辑了这个问题),它只打印['Head 1','Head 2','Head 3']@CeDurán不,问题,我已经将它改为从文件工作。现在将更新。您好,非常感谢您的帮助,但是一旦我在“Head X”和下一个字符串之间添加了行距(这就是我编辑问题的方式),这就不再有效了,它只返回[{'Head 1':set([''])},{'Head 2':set([''])},{'Head 3':set(['']}]@CeDurán希望您不再更改输入。看一看。