Muchos problemas de división se han tratado en el pasado, pero a veces, uno también puede encontrar este problema en el que necesitamos dividir la string en la K-ésima aparición de un carácter. Analicemos ciertas formas en que se puede resolver este problema.
Método #1: Uso de split() + join()
El método de dividir y unir puede realizar esta tarea en particular. En esto, dividimos la string en función del carácter y, de acuerdo con K, realizamos una reincorporación utilizando el método de combinación anidada.
Python3
# Python3 code to demonstrate working of # Split string on Kth Occurrence of Character # Using split() + join() # initializing string test_str = "Geeks_for_Geeks_is_best" # split char splt_char = "_" # initializing K K = 3 # printing original string print("The original string is : " + str(test_str)) # Using split() + join() # Split string on Kth Occurrence of Character temp = test_str.split(splt_char) res = splt_char.join(temp[:K]), splt_char.join(temp[K:]) # printing result print("Is list after Kth split is : " + str(list(res)))
The original string is : Geeks_for_Geeks_is_best Is list after Kth split is : ['Geeks_for_Geeks', 'is_best']
Método #2: Uso de expresiones regulares
Este problema también se puede resolver utilizando la expresión regular para realizar esta tarea en particular. Junto con el corte, el método finditer de la biblioteca de expresiones regulares puede ayudar a lograr esta tarea en particular.
Python3
# Python3 code to demonstrate working of # Split string on Kth Occurrence of Character # Using regex import re # initializing string test_str = "Geeks_for_Geeks_is_best" # split char splt_char = "_" # initializing K K = 3 # printing original string print("The original string is : " + str(test_str)) # Using regex # Split string on Kth Occurrence of Character temp = [x.start() for x in re.finditer(splt_char, test_str)] res1 = test_str[0:temp[K - 1]] res2 = test_str[temp[K - 1] + 1:] res = (res1 + " " + res2).split(" ") # printing result print("Is list after Kth split is : " + str(res))
The original string is : Geeks_for_Geeks_is_best Is list after Kth split is : ['Geeks_for_Geeks', 'is_best']
Método #3: Usando maxsplit de split
Puede usar la división en sí misma para obtener el número k-ésimo, el segundo parámetro de la división del método, esa es la división máxima, luego tiene su string.
Probablemente la forma más fácil
Python3
test_str = "Geeks for geeks" K = 1 #kth occurrence new_str, rest = test_str.split(" ", K) #or if you want a list new_str_list = test_str.split(" ", K) print(new_str) print(rest) print(f'list: {new_str_list}')
Geeks for geeks list: ['Geeks', 'for geeks']
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