2010-08-15 27 views
62

Parece que puede encontrar una función de subcadena en python.Salida de los primeros 100 caracteres en una cadena

Digamos que quiero mostrar los primeros 100 caracteres de una cadena, ¿cómo puedo hacer esto?

Quiero hacerlo de forma segura también, diciendo que si la cadena tiene 50 caracteres, no debería fallar.

+2

El seguimiento de esta pregunta es: [Buen manual para la notación de división de Python] (http://stackoverflow.com/questions/509211/ good -primer-for-python-slice-notation) –

+1

¿Qué quiere decir con " caracteres"? ¿Puntos de código, clústeres de grafemas o unidades de código? El corte contará las unidades de código, que podrían no dar el resultado deseado. – Philipp

Respuesta

96
print my_string[0:100] 
+1

También puede hacer 'my_string [: 100]', ¿verdad? – nnyby

21

Fácil:

print mystring[:100] 
48

De python tutorial:

índices rebanada degenerados se manejan con gracia: un índice que es demasiado grande se sustituye por el tamaño de la cadena, una límite superior más pequeño que el límite inferior devuelve un vacío y cuerda

Por lo tanto, es seguro usar x[:100].

4

El corte de matrices se realiza con [first:last+1].

Un truco que suelo usar mucho es indicar información adicional con elipsis. Por lo tanto, si el campo es de cien caracteres, usaría:

if len(s) <= 100: 
    print s 
else: 
    print "%s..."%(s[:97]) 

Y sí, sé () es superfluo en este caso para el operador de formato %, es sólo mi estilo.

+0

Supongo que esto fue pensado como algo para pensar, pero en el caso del OP, probablemente no sugeriría hacer eso. El resultado sería una cadena que tendría que verificar el contenido para recortar más o algo así.En este caso, me imagino que uno querría que ese número sea variable, y el resultado sea siempre correcto, o el número que se va a arreglar y el manejo, ya sea produciendo algo significativo, o error o devolución elegante en caso de falla. No puedo pensar en muchos casos, aparte de la entrega de información legible por humanos, donde me gustaría agregar texto arbitrariamente a una cadena. –

6

Para responder a la preocupación de Philipp (en los comentarios), rebanar funciona bien para las cadenas Unicode demasiado

>>> greek=u"αβγδεζηθικλμνξοπρςστυφχψω" 
>>> print len(greek) 
25 
>>> print greek[:10] 
αβγδεζηθικ 

Si desea ejecutar el código anterior como un script, poner esta línea en el

superior
# -*- coding: utf-8 -*- 

Si su editor no guarda en UTF-8, sustituir la codificación correcta

+1

No menospreciando su respuesta, pero hay solo 24 letras en griego, 'ς' y' σ' son la misma letra :-) – paxdiablo

+3

@paxdiablo, doh! Los copié de la página de wikipedia. Afortunadamente, no nombré la variable 'greek_alphabet' entonces :) –

1

la mayoría de los ejemplos anteriores se lanzará una excepción en el caso de que su cadena no es lo suficientemente largo.

Otro enfoque es usar 'yourstring'.ljust(100)[:100].strip().

Esto le dará los primeros 100 caracteres. Es posible que obtenga una cadena más corta en caso de que la última cadena de caracteres sea espacios.

Cuestiones relacionadas