¿Maneras de cortar una cadena?

Tengo una cadena, ejemplo:

s = "this is a string, a" 

Donde a ',' (coma) siempre será del 3 al último carácter, también conocido como s[-3] .

Estoy pensando en maneras de eliminar el ‘,’ pero solo puedo pensar en convertir la cadena en una lista, eliminarla y convertirla de nuevo en una cadena. Esto, sin embargo, parece demasiado para una tarea sencilla.

¿Cómo puedo lograr esto de una manera más simple?

Normalmente, simplemente harías:

 s = s[:-3] + s[-2:] 

La s[:-3] le da una cadena hasta, pero sin incluir, la coma que desea eliminar ( "this is a string" ) y la s[-2:] le da otra cadena que comienza un carácter más allá de esa coma ( " a" ).

Luego, al unir las dos cadenas, obtendrás lo que estabas buscando ( "this is a string a" ).

Un par de variantes, usando “eliminar la última coma” en lugar de “eliminar el tercer último carácter” son:

 s[::-1].replace(",","",1)[::-1] 

o

 ''.join(s.rsplit(",", 1)) 

Pero estos son bastante feos. Un poco mejor es:

 a, _, b = s.rpartition(",") s = a + b 

Este puede ser el mejor enfoque si no conoce la posición de la coma (a excepción de la última coma en la cadena) y efectivamente necesita un “reemplazo de la derecha”. Sin embargo, la respuesta de Anurag es más pythonic para “eliminar el tercer último carácter”.

Las cuerdas de python son inmutables. Esto significa que debe crear al menos 1 nueva cadena para eliminar la coma, en lugar de editar la cadena en su lugar en un lenguaje como C.

Para borrar todos los caracteres ‘,’ en el texto, puede intentar

 s = s.split(',') >> ["this is a string", " a"] s = "".join(s) >> "this is a string a" 

O en una línea:

 s0 = "".join(s.split(',')) 

La mejor forma simple es: puede usar la función de reemplazo como:

 >>> s = 'this is a string, a' >>> s = s.replace(',','') >>> s 'this is a string a' 

Aquí, sustituya la función () busque el carácter ‘,’ y sustitúyalo por ”, es decir, el carácter vacío

Tenga en cuenta que, la función replace () establece por defecto todos ‘,’ pero si solo desea reemplazar algunos ‘,’ en algunos casos puede usar: s.replace (‘,’, ”, 1)

Para dividir una cadena de longitud arbitraria en múltiples rebanadas de igual longitud de longitud arbitraria, puede hacer

 def slicer(string, slice_length): return [string[i:i + slice_length] for i in xrange(0, len(string), slice_length)] 

Si slice_length no se divide exactamente en len (cadena), habrá un único segmento al final de la lista que contiene el rest.