Это правильно анализирует ваш файл примера:
with open('yourfile') as f:
result = {'have paid': [], '': []}
current = []
for line in f:
line = line.strip().strip('-')
if line in result:
result[line].extend(current)
current = []
else:
current.append(line)
print 'These have paid:', ','.join(result['have paid'])
print 'These have not paid:', ','.join(result[''])
Результат:
These have paid: person3,person4,person10,person11
These have not paid: person1,person2,person5,person6,person7,person9