Python 读取文件,匹配字符串(标题)并在每个标题下保存块
我知道如何在python中逐行读取文件,如果需要,匹配大小写并将信息保存在字典中。但是现在我有一个像这样的txt文件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,
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希望您不再更改输入。看一看。