Dada una string con puntuaciones, realice la secuencia inversa, dejando las puntuaciones en sus lugares.
Entrada : test_str = ‘geeks@#for&%%gee)ks’
Salida : skeeg@#rof&%%ske)eg
Explicación : toda la string está invertida, excepto los signos de puntuación.Entrada : test_str = ‘geeks@#for&%%gee)ks’ [solo inversión de substrings]
Salida : skeeg@#rof&%%eeg)sk
Explicación : solo se invierten las substrings.
Método n. ° 1: usar bucle + pila + puntuación + división()
En esto, usamos stack para realizar la inversión de strings, verificando la puntuación, si el carácter actual es uno, lo agregamos. El método de división se usa para manejar casos de espacios, que deben ignorarse mientras se invierte.
Python3
# Python3 code to demonstrate working of # Reverse String except punctuations # Using loop + stack + punctuation + split() from string import punctuation # initializing string test_str = 'geeks# for&%% gee)ks' # printing original string print("The original string is : " + str(test_str)) # getting punctuations punc_set = set(punctuation) res = [] for sub in test_str.split(' '): # getting all alphabets alphas = [chr for chr in sub if chr not in punc_set] for chr in sub: # checking for punctuations if chr not in punc_set: res.append(alphas.pop()) continue else: res.append(chr) # handling spaces res.append(' ') res = "".join(res) # printing result print("The Reversed String ignoring punctuation : " + str(res))
The original string is : geeks#for&%%gee)ks The Reversed String ignoring punctuation : skeeg#rof&%%ske)eg
Método #2: Usar groupby() + isalnum() [para inversión específica de substring]
En esto, formamos una agrupación de cada una de las substrings entre puntuaciones y las invertimos entre ellas, no enteras. El isalnum() se usa para verificar todos los alfabetos.
Python3
# Python3 code to demonstrate working of # Reverse String except punctuations # Using groupby() + isalnum() [ for substring specific reversal ] from itertools import groupby # initializing string test_str = 'geeks# for&%% gee)ks' # printing original string print("The original string is : " + str(test_str)) res = '' # grouping all sections for ele, sub in groupby(test_str, str.isalnum): sub = list(sub) # reversal on alphanumeric occurrence if ele: sub = sub[::-1] # joining all subparts res += ''.join(sub) # printing result print("The Reversed String ignoring punctuation [substring] : " + str(res))
The original string is : geeks#for&%%gee)ks The Reversed String ignoring punctuation [substring] : skeeg#rof&%%eeg)sk
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA