¿Convertir una cadena en un nombre de archivo válido?

Tengo una cadena que quiero usar como nombre de archivo, por lo que quiero eliminar todos los caracteres que no se permitirían en los nombres de archivo, usando Python.

Prefiero ser estricto que lo contrario, así que digamos que quiero retener solo letras, dígitos y un pequeño conjunto de otros caracteres como"_-.() ". ¿Cuál es la solución más elegante?

El nombre de archivo debe ser válido en varios sistemas operativos (Windows, Linux y Mac OS): es un archivo MP3 en mi biblioteca con el título de la canción como nombre de archivo, y se comparte y realiza una copia de seguridad entre 3 máquinas.

Respuestas a la pregunta(21)

Su respuesta a la pregunta