¿Cómo mostrar los primeros caracteres de una cadena en Python?

87

Hola, acabo de empezar a aprender Python, pero estoy un poco atascado en este momento.

Tengo un hash.txtarchivo que contiene miles de hashes de malware en MD5, Sha1 y Sha5 respectivamente separados por delimitadores en cada línea. A continuación se muestran 2 líneas de ejemplo que extraje del archivo .txt.

416d76b8811b0ddae2fdad8f4721ddbe | d4f656ee006e248f2f3a8a93a8aec5868788b927 | 12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f 56a99a4205a4d6cab2dcae414a5670fd | 612aeeeaa8aa432a7b96202847169ecae56b07ee | d17de7ca4c8f24ff49314f0f342dbe9243b10e9f3558c6193e2fd6bccb1be6d2

Mi intención es mostrar los primeros 32 caracteres (hash MD5) para que la salida se vea así:

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

¿Algunas ideas?

Levantamiento de Lee
fuente
7
Lea esta breve Introducción a Python y desplácese hasta la mitad. "Cortar cuerdas" es lo que quieres.
Joel Cornett
11
the_string[:32]
JBernardo
2
Corte de cadenas y cómo abrir archivos si aún no lo ha leído
César
2
Probablemente también te interesen los métodos .split()y .strip()de las cadenas. Por ejemplo, md5, sha1, sha5 = line.strip().split("|")hace más o menos lo que imagina que haría.
DSM
1
Gracias por sus comentarios chicos, finalmente lo hice funcionar. Probé todos y cada uno de los métodos y parece que TankorSmash es el que más me conviene. ¡Agradezco la ayuda de todos y cada uno!
Rising Lee

Respuestas:

185

Puede 'cortar' un stringmuy fácilmente, tal como lo haría con elementos de un list:

a_string = 'This is a string'

Para obtener las primeras 4 letras:

first_four_letters = a_string[:4]
>>> 'This'

O los últimos 5:

last_five_letters = a_string[-5:]
>>> 'string'

Entonces, aplicando esa lógica a tu problema:

the_string = '416d76b8811b0ddae2fdad8f4721ddbe|d4f656ee006e248f2f3a8a93a8aec5868788b927|12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f '
first_32_chars = the_string[:32]
>>> 416d76b8811b0ddae2fdad8f4721ddbe
TankorSmash
fuente
1
the_string.split ('|') [0]
César
3
@ César: generalmente es mejor (y más rápido) mostrar el hecho de que solo necesitas la primera parte de la cadena dividida con the_string.split('|', 1)[0].
Eric O Lebigot
16

Dado que hay un delimitador, debe usarlo en lugar de preocuparse por la longitud de md5.

>>> s = "416d76b8811b0ddae2fdad8f4721ddbe|d4f656ee006e248f2f3a8a93a8aec5868788b927|12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f"
>>> md5sum, delim, rest = s.partition('|')
>>> md5sum
'416d76b8811b0ddae2fdad8f4721ddbe'

Alternativamente

>>> md5sum, sha1sum, sha5sum = s.split('|')
>>> md5sum
'416d76b8811b0ddae2fdad8f4721ddbe'
>>> sha1sum
'd4f656ee006e248f2f3a8a93a8aec5868788b927'
>>> sha5sum
'12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f'
John La Rooy
fuente
2
+1 por considerar las cosas del delimitador para hash de longitud variable :-)
Vinayak Kolagi
0

Si desea las primeras 2 letras y las últimas 2 letras de una cadena, puede usar el siguiente código: name = "India" name[0:2]="In" names[-2:]="ia"

Darshan Jain
fuente