Come visualizzare i primi pochi caratteri di una stringa in Python?


87

Ciao, ho appena iniziato a imparare Python ma al momento sono un po 'bloccato.

Ho un hash.txtfile contenente migliaia di hash malware in MD5, Sha1 e Sha5 rispettivamente separati da delimitatori in ogni riga. Di seguito sono riportati 2 esempi di righe che ho estratto dal file .txt.

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

La mia intenzione è quella di visualizzare i primi 32 caratteri (hash MD5) in modo che l'output sia simile a questo:

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

Qualche idea?


7
Leggi questa breve introduzione a Python e scorri circa a metà. "String slicing" è quello che vuoi.
Joel Cornett

11
the_string[:32]
JBernardo

2
Stringa di taglio e come aprire i file se non l'hai già letto
César

2
Probabilmente sarai anche interessato ai metodi .split()e .strip()delle stringhe. Ad esempio, md5, sha1, sha5 = line.strip().split("|")fa più o meno quello che immagineresti.
DSM

1
Grazie per i vostri commenti, ragazzi, finalmente ho funzionato. Ho provato tutti i metodi e sembra che TankorSmash funzioni il più conveniente per me. Apprezzo l'aiuto di tutti!
Rising Lee

Risposte:


185

Puoi 'tagliare' un stringmolto facilmente, proprio come faresti con gli elementi da un list:

a_string = 'This is a string'

Per ottenere le prime 4 lettere:

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

O gli ultimi 5:

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

Quindi applicando quella logica al tuo problema:

the_string = '416d76b8811b0ddae2fdad8f4721ddbe|d4f656ee006e248f2f3a8a93a8aec5868788b927|12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f '
first_32_chars = the_string[:32]
>>> 416d76b8811b0ddae2fdad8f4721ddbe

1
the_string.split ('|') [0]
César

3
@ César: in genere è meglio (e più veloce) mostrare il fatto che ti serve solo la prima parte della stringa divisa con the_string.split('|', 1)[0].
Eric O Lebigot

16

Dato che c'è un delimitatore, dovresti usarlo invece di preoccuparti di quanto è lungo md5.

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

In alternativa

>>> md5sum, sha1sum, sha5sum = s.split('|')
>>> md5sum
'416d76b8811b0ddae2fdad8f4721ddbe'
>>> sha1sum
'd4f656ee006e248f2f3a8a93a8aec5868788b927'
>>> sha5sum
'12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f'

2
+1 per aver considerato il delimitatore per hash di lunghezza variabile :-)
Vinayak Kolagi

0

Se vuoi le prime 2 lettere e le ultime 2 lettere di una stringa, puoi utilizzare il seguente codice: name = "India" name[0:2]="In" names[-2:]="ia"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.