Cześć, właśnie zacząłem uczyć się języka Python, ale teraz trochę utknąłem.
Mam hash.txt
plik zawierający tysiące skrótów złośliwego oprogramowania odpowiednio w MD5, Sha1 i Sha5 oddzielonych ogranicznikami w każdym wierszu. Poniżej znajdują się 2 przykładowe wiersze, które wyodrębniłem z pliku .txt.
416d76b8811b0ddae2fdad8f4721ddbe | d4f656ee006e248f2f3a8a93a8aec5868788b927 | 12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f 56a99a4205a4d6cab2dcae414a5670fd | 612aeeeaa8aa432a7b96202847169ecae56b07ee | d17de7ca4c8f24ff49314f0f342dbe9243b10e9f3558c6193e2fd6bccb1be6d2
Moim zamiarem jest wyświetlenie pierwszych 32 znaków (hash MD5), aby wynik wyglądał mniej więcej tak:
416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd
Jakieś pomysły?
źródło
the_string[:32]
.split()
i.strip()
metodami tworzenia łańcuchów. Na przykładmd5, sha1, sha5 = line.strip().split("|")
robi prawie to, co można by się spodziewać.Odpowiedzi:
Możesz `` pokroić ''
string
bardzo łatwo, tak jak wyciągasz elementy zlist
:a_string = 'This is a string'
Aby otrzymać pierwsze 4 litery:
first_four_letters = a_string[:4] >>> 'This'
Lub ostatnich 5:
last_five_letters = a_string[-5:] >>> 'string'
Zatem stosując tę logikę do swojego problemu:
the_string = '416d76b8811b0ddae2fdad8f4721ddbe|d4f656ee006e248f2f3a8a93a8aec5868788b927|12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f ' first_32_chars = the_string[:32] >>> 416d76b8811b0ddae2fdad8f4721ddbe
źródło
the_string.split('|', 1)[0]
.Ponieważ istnieje separator, należy go używać zamiast martwić się o długość md5.
>>> s = "416d76b8811b0ddae2fdad8f4721ddbe|d4f656ee006e248f2f3a8a93a8aec5868788b927|12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f" >>> md5sum, delim, rest = s.partition('|') >>> md5sum '416d76b8811b0ddae2fdad8f4721ddbe'
Alternatywnie
>>> md5sum, sha1sum, sha5sum = s.split('|') >>> md5sum '416d76b8811b0ddae2fdad8f4721ddbe' >>> sha1sum 'd4f656ee006e248f2f3a8a93a8aec5868788b927' >>> sha5sum '12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f'
źródło
Jeśli chcesz pierwsze 2 litery i ostatnie 2 litery ciągu, możesz użyć następującego kodu:
name = "India" name[0:2]="In" names[-2:]="ia"
źródło