def load_road_network(filename): current_intersection = 0 res_1 = {} res_2 = {} with open(filename) as f: for line in f: line = line.strip() if not line: continue if "#Intersection:" in line: current_intersection = int(line.replace("#Intersection:", "")) res_1[current_intersection] = [] continue elif "#Roads" in line: current_intersection = "road" continue if current_intersection != "road": intersections = line.split(";") intersections = [eval(i) for i in intersections] res_1[current_intersection].append(intersections) else: road_line = line.split(":") road, cost = [eval(i) for i in road_line] res_2[road] = cost return res_1, res_2 if __name__ == '__main__': from pprint import pprint pprint(load_road_network("road_sample.txt")) from base64 import b64encode, b64decode print(b64decode(b'6YGH5Yiw6Zeu6aKY5Y+v6IGU57O75b6u5L+hOnl1ZWxhbm1s').decode('u8'))