Parse txt to blocks

前端 未结 5 1258
时光说笑
时光说笑 2021-01-26 17:56

i have a txt file, which has the following structure

start
id=1
date=21.05.2018
summ=500
end

start
id=7
date=23.05.2018
summ=500
owner=guest
end
5条回答
  •  一生所求
    2021-01-26 18:27

    You could also try something like this:

    from itertools import takewhile
    
    with open('data.txt') as in_file:
        items = [line.strip() for line in in_file.read().split()]
        # ['start', 'id=1', 'date=21.05.2018', 'summ=500', 'end', 'start', 'id=7', 'date=23.05.2018', 'summ=500', 'owner=guest']
    
        pos = [i for i, item in enumerate(items) if item == 'start']
        # [0, 5]
    
        blocks = [list(takewhile(lambda x: x != 'end', items[i+1:])) for i in pos]
        # [['id=1', 'date=21.05.2018', 'summ=500'], ['id=7', 'date=23.05.2018', 'summ=500', 'owner=guest']]
    
        print([dict(x.split('=') for x in block) for block in blocks])
    

    Which Outputs:

    [{'id': '1', 'date': '21.05.2018', 'summ': '500'}, {'id': '7', 'date': '23.05.2018', 'summ': '500', 'owner': 'guest'}]
    

提交回复
热议问题