Jak wyświetlić kilka pierwszych znaków ciągu w Pythonie?


87

Cześć, właśnie zacząłem uczyć się języka Python, ale teraz trochę utknąłem.

Mam hash.txtplik 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?


7
Przeczytaj to krótkie wprowadzenie do języka Python i przewiń mniej więcej w połowie. "Cięcie strun" jest tym, czego chcesz.
Joel Cornett

11
the_string[:32]
JBernardo

2
Cięcie strun i jak otwierać pliki, jeśli jeszcze tego nie czytałeś
César

2
Prawdopodobnie będziesz również zainteresowany metodami .split()i .strip()metodami tworzenia łańcuchów. Na przykład md5, sha1, sha5 = line.strip().split("|")robi prawie to, co można by się spodziewać.
DSM,

1
Dzięki za komentarze, w końcu udało mi się. Wypróbowałem wszystkie metody i wydaje mi się, że TankorSmash działa dla mnie najwygodniej. Doceniam pomoc każdego!
Rising Lee

Odpowiedzi:


186

Możesz `` pokroić '' stringbardzo łatwo, tak jak wyciągasz elementy z list:

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

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

3
@ César: generalnie lepiej (i szybciej) jest pokazać fakt, że potrzebujesz tylko pierwszej części podzielonej struny the_string.split('|', 1)[0].
Eric O Lebigot

16

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'

2
+1 za rozważenie separatora dla zmiennej długości hash :-)
Vinayak Kolagi

0

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"

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.