#!/usr/bin/python def nameAbbrev(name): words = name.split() last = words.pop() return " ".join([w[0] + "." for w in words] + [last]) def tableReport(tableName, people): return "Table %s %s: %s people (%s)" % (tableName, "*" * min(10, len(people)), len(people), ", ".join(nameAbbrev(n) for n in people)) import sys if len(sys.argv) < 2 or sys.argv[1].startswith('-'): input = sys.stdin else: input = open(sys.argv[1]) tables = [[]] keyedTables = {} for line in input: line = line.strip() words = line.split(None, 1) if words and len(words[0]) == 1: # "d first last" key, name = words keyedTables.setdefault(key, []).append(name) continue if line: tables[-1].append(line) else: tables.append([]) tables = [t for t in tables if t] for i, people in enumerate(tables): print tableReport(i + 1, people) for k, people in keyedTables.items(): print tableReport(k, people)