Python: invierta las palabras en una línea y mantenga intactos los caracteres especiales

Invierta los caracteres en todas las palabras de una línea, incluidos los números, pero deje intactos los caracteres especiales y los símbolos en la misma posición. Considere los siguientes ejemplos.

Entrada: ‘Bangalore is@#$!123 bloqueado nuevamente en julio de 2020’ debe cambiar a 
Salida: ‘erolagnaB si@#$!321 dekcol niaga ni 0202luj’ 

Entrada: ‘Bangalore is@#$!123locked bloqueado de nuevo en julio de 2020’ debe cambiar a 
Salida: ‘erolagnaB si@#$!dekcol321 dekcol niaga ni 0202luj’ 
 

Mire el ejemplo anterior, cada palabra se invierte, si hay algún carácter especial, entonces la palabra que rodea al carácter especial se invierte.

Python3

def reverStringsInLine(s):
   
    sl = s.split(' ')
    rsl = ''
     
    for word in sl:
        str_word = ''
        rev_sub_word = ''
         
        for ch in word:
             
            if ch.isalnum():
                str_word += ch
             
            else:
                 
                # If it is special character, then
                # reverse non special characters and
                # append special character
                 
                rev_sub_word += str_word[::-1] + ch
                 
                # Clear the old stached character, as
                # it is already reversed
                str_word = ''
         
        # Keep appending each words, also add words
        # ending with non-special character
        r_word = rev_sub_word + str_word[::-1]
        rsl += r_word + ' '
    return rsl
 
 
s = 'Bangalore is@#$!123locked locked again in jul2020'
 
print(reverStringsInLine(s))

Producción:

erolagnaB si@#$!dekcol321 dekcol niaga ni 0202luj 

Publicación traducida automáticamente

Artículo escrito por nagendrakallihal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *