我知道如何在python中逐行读取文件,如果是这样的话,匹配案例并在字典中保存信息。但现在我有一个这样的txt文件
Head 1
bla1
bla2
bla3
Head 2
blo 1
blo 2
blo 3
blo 4
Head 3
blu 1
blu 2
我需要保存属于每个头X的信息,例如像
head 1 : {bla 1,bla 2, bla 3}, head 2 : {blo 1, blo 2, blo 3, blo 4}, head 3 :{blu 1 , blu 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)
但它只返回很多空列表。 我也尝试制作一个字典,通过匹配头部X并获取文件中的列,但由于它们没有被排序,它会返回给我这样的东西
head 1 : {bla 1, blu 2, blo 3}, head 2 : {bla 1, bla 2, blo 3, blo 4}, head 3 :{blu 1 , blo 2}
答案 0 :(得分:0)
with open('data', 'r') as f:
li = f.read()
li = re.findall(r'(Head.*?\n+.*?)(?:\n+^$|\Z)',li, re.MULTILINE|re.DOTALL)
# # split strings on newline
li = list(map(lambda x: re.split('\n+',x),li))
# # create dictionaries
lid = [ {l[0]:{','.join(l[1:])}} for l in li]
pp(lid)
[{'Head 1': {'bla1,bla2,bla3'}},
{'Head 2': {'blo 1,blo 2,blo 3,blo 4'}},
{'Head 3': {'blu 1,blu 2'}}]