2010-08-18 18 views
9

tengo una cadenaPython eliminar las partes de la cadena por el índice

string='texttexttextblahblah",".' 

y lo que quiero hacer es cortar de algunos de los caracteres más a la derecha por la indexación y asignarlo a string modo que string será igual a texttexttextblahblah"

Miré alrededor y encontré cómo imprimir por indexación, pero no cómo reasignar esa variable real para recortar.

+0

posible duplicado de [Python Retire los 3 últimos caracteres de una cadena] (http://stackoverflow.com/questions/1798465/ python-remove-last-3-characters-of-a-string) – outis

Respuesta

14

Sólo reasignar lo que ha imprimido a la variable.

>>> string='texttexttextblahblah",".' 
>>> string = string[:-3] 
>>> string 
'texttexttextblahblah"' 
>>> 

También, evitar el uso de nombres de bibliotecas o las órdenes internas (string) para las variables

a menos que sepa exactamente cuántos text y blah 's que tendrá, utilice .find() como se sugiere Brent (o .index(x), que es como find, excepto se queja cuando no encuentra x).

Si quiere ese trailing ", simplemente agregue uno al valor que emite. (O simplemente find el valor que realmente desea dividir en, ,)

mystr = mystr[:mystr.find('"') + 1] 
+0

Esto es exactamente lo que estaba esperando. ¡¡¡Gracias!!! – Brian

4

cadenas son inmutables por lo que realmente no se puede cambiar la cadena en el lugar. Tendrá que cortar la parte que desea y luego volver a asignarla sobre la variable original.

es algo como esto lo que querías? (Tenga en cuenta que me fui a cabo el almacenamiento del índice en una variable, porque no estoy seguro de cómo se está utilizando este):

>>> s = 'texttexttextblahblah",".' 
>>> s.index('"') 
20 
>>> s = s[:20] 
>>> s 
'texttexttextblahblah' 
5

Si necesidad algo que funciona como una cadena, pero es mutable que puede utilizar un bytearray

>>> s=bytearray('texttexttextblahblah",".') 
>>> s[20:]='' 
>>> print s 
texttexttextblahblah 

ByteArray tiene todos los métodos de las cadenas habituales

2

yo preferiría hacerlo sin indexación: (Mi favorito partición se comentó como ganador en la velocidad y clearn ess en los comentarios, así que actualiza el código original)

s = 'texttexttextblahblah",".' 
s,_,_ = s.partition(',') 
print s 

Resultado

texttexttextblahblah" 
+0

Él quería el "en el resultado (podría ser un error tipográfico), sin embargo. –

+0

' s = s [: s.find ('"')]' es más eficiente –

+0

Hice el cambio yo mismo, como lo noté, prefiero dividirme o dividirme en forma pitonica. Es decir, prefiero "Hacer que funcione de manera clara, luego optimizar". –

Cuestiones relacionadas