Wie werden die ersten Zeichen einer Zeichenfolge in Python angezeigt?

87

Hallo, ich habe gerade angefangen, Python zu lernen, aber ich stecke gerade irgendwie fest.

Ich habe eine hash.txtDatei mit Tausenden von Malware-Hashes in MD5, Sha1 und Sha5, die in jeder Zeile durch Trennzeichen getrennt sind. Unten sind 2 Beispielzeilen aufgeführt, die ich aus der TXT-Datei extrahiert habe.

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

Meine Absicht ist es, die ersten 32 Zeichen (MD5-Hash) anzuzeigen, damit die Ausgabe ungefähr so ​​aussieht:

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

Irgendwelche Ideen?

Steigender Lee
quelle
7
Lesen Sie diese kurze Einführung in Python und scrollen Sie etwa zur Hälfte nach unten. "String Slicing" ist was Sie wollen.
Joel Cornett
11
the_string[:32]
JBernardo
2
String Slicing und wie man Dateien öffnet, wenn Sie das noch nicht gelesen haben
César
2
Sie werden sich wahrscheinlich auch für die .split()und .strip()Methoden von Strings interessieren . Zum Beispiel md5, sha1, sha5 = line.strip().split("|")macht so ziemlich das, was Sie vermuten würden.
DSM
1
Vielen Dank für Ihre Kommentare Jungs, ich habe es endlich zum Laufen gebracht. Ich habe jede einzelne Methode ausprobiert und es scheint, als ob TankorSmashs Arbeiten für mich am bequemsten sind. Ich schätze die Hilfe jedes Einzelnen!
Steigender Lee

Antworten:

183

Sie können eine stringsehr einfach in Scheiben schneiden , genau wie Sie Gegenstände aus einer list:

a_string = 'This is a string'

So erhalten Sie die ersten 4 Buchstaben:

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

Oder die letzten 5:

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

Wenden Sie diese Logik also auf Ihr Problem an:

the_string = '416d76b8811b0ddae2fdad8f4721ddbe|d4f656ee006e248f2f3a8a93a8aec5868788b927|12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f '
first_32_chars = the_string[:32]
>>> 416d76b8811b0ddae2fdad8f4721ddbe
TankorSmash
quelle
1
the_string.split ('|') [0]
César
3
@ César: Es ist im Allgemeinen besser (und schneller) zu zeigen, dass Sie nur den ersten Teil der geteilten Zeichenfolge mit benötigen the_string.split('|', 1)[0].
Eric O Lebigot
15

Da es ein Trennzeichen gibt, sollten Sie dieses verwenden, anstatt sich Gedanken darüber zu machen, wie lang der MD5 ist.

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

Alternative

>>> md5sum, sha1sum, sha5sum = s.split('|')
>>> md5sum
'416d76b8811b0ddae2fdad8f4721ddbe'
>>> sha1sum
'd4f656ee006e248f2f3a8a93a8aec5868788b927'
>>> sha5sum
'12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f'
John La Rooy
quelle
2
+1 für die Berücksichtigung des Trennzeichens für Hash mit variabler Länge :-)
Vinayak Kolagi
0

Wenn Sie die ersten 2 Buchstaben und die letzten 2 Buchstaben einer Zeichenfolge möchten, können Sie den folgenden Code verwenden: name = "India" name[0:2]="In" names[-2:]="ia"

Darshan Jain
quelle