Pude aislar la lista (o cadena) de caracteres que quiero excluir de una cadena ingresada por el usuario. Pero no veo cómo eliminar todos estos caracteres no deseados. Después de hacer esto, creo que puedo intentar unir la cadena de usuario para que todo se convierta en una entrada alfabética como dicen las instrucciones.

Instrucciones:

Eliminar todos los caracteres no alfabéticos Escriba un programa que elimine todos los caracteres no alfabéticos de la entrada dada.

Por ejemplo, si la entrada es:
-¡Hola, 1 mundo$!
la salida debe ser:
Helloworld

Mi código:

userEntered = input()
makeList = userEntered.split()
def split(userEntered):
    return list(userEntered)
    
    
if userEntered.isalnum() == False:
    for i in userEntered:
        if i.isalpha() == False:
            #answer = userEntered[slice(userEntered.index(i))]
           reference = split(userEntered)
           excludeThis = i
           print(excludeThis)
 
    

Cuando imprimo excludeThis, obtengo esto como mi salida:

-
,
 
1
 
$
!

Así que creo que podría estar en el camino correcto. Necesito averiguar cómo sacar estos caracteres de la entrada del usuario. Cualquier ayuda es apreciada.

respuesta

Bucle sobre la cadena de entrada. Si el carácter es alfabético, agréguelo a la cadena de resultado.

userEntered = input()
result = ''
for char in userEntered:
    if char.isalpha():
        result += char
print(result)

Esto también se puede hacer con una expresión regular:

import re

userEntered = input()
result = re.sub(r'[^a-z]', '', userEntered, flags=re.I)

La expresión regular [^a-z]coincide con cualquier cosa excepto con un carácter alfabético. La re.Ibandera lo hace insensible a mayúsculas y minúsculas. Todos estos se reemplazan con una cadena vacía, que los elimina.

Básicamente, hay dos partes principales en esto: distinguir alfa de no alfa y obtener una cadena solo con la primera. Si isalpha()es satisfactorio para el primero, entonces eso deja al segundo. Tengo entendido que la solución que se considera más Pythonic sería unir una comprensión. Esto le gustaría esto:

''.join(char for char in userEntered if char.isalpha())

Por cierto, hay varios lugares en el código donde lo está haciendo más complicado de lo que debe ser. En Python, puede iterar sobre cadenas, por lo que no es necesario convertir userEntereda una lista. isalnum()comprueba si la cadena es alfanumérica, por lo que es bastante irrelevante (alfanumérico incluye dígitos). Nunca debe comparar un booleano con Trueo False, solo use el booleano. Entonces, por ejemplo, if i.isalpha() == False:se puede simplificar a solo if not i.isalpha():.