raw = "{1:xxxx}{2:xxxx}{3:{10:xxxx}}{4:'xxxx\r\n:xxxx'}"

def parse(raw):
    parts = raw[1:-1].split('}{')
for part in parts:
    num, data = part.split(':', 1)
yield int(num), data
print(dict(parse(raw)))
разделение сгруппированной строки фигурных скобок в python