You could split the string by "\n\n" and look for string that start with Fruits
print(*(i for i in s.split("\n\n") if i.startswith("Fruits")))
Or if you have multiple groups:
print('\n\n'.join((i for i in s.split("\n\n") if i.startswith("Fruits"))))
Returns:
Fruits
Apples: 10
Oranges: 20
Bananas: 5
If:
s = """Fruits
Apples: 10
Oranges: 20
Bananas: 5
Pastry
Cupcakes: 5
Buns: 10
Waffles: 20"""
furthermore
You could also extract the items by a single line:
fruits = [i for i in s.split("\n\n") if i.startswith("Fruits")][0]
fruitdict = dict((i.strip() for i in i.split(":")) for i in fruits.split('\n')[1:])
fruitdict
Returns:
{'Apples': '10', 'Bananas': '5', 'Oranges': '20'}
or extract all categories:
categories = [i for i in s.split("\n\n")]
d = {}
for item in categories:
rows = item.split('\n')
d[rows[0]] = dict((i.strip() for i in i.split(":")) for i in rows[1:])
# d[rows[0]] = dict((i.split(":")[0],int(i.split(":")[1])) for i in rows[1:])
d
Returns:
{'Fruits': {'Apples': '10', 'Bananas': '5', 'Oranges': '20'},
'Pastry': {'Buns': '10', 'Cupcakes': '5', 'Waffles': '20'}}