Find a famous writer in a random string
3) Yes, you can shorten the function:

def decide(mess, indexes):
    return ''.join(mess[int(i)-1] for i in indexes)


I just removed the unnecessary conversion to list and replaced the append loop with a generator expression.

Tuple unpacking allows more documenting names:

mess, indexes = lunedì.split('|')
print(decoder(mess, indexes.split()))


I do not think you need so much stripping at the file parsing step.