Python'da bir dizenin ilk birkaç karakteri nasıl görüntülenir?


89

Merhaba Python öğrenmeye yeni başladım ama şu anda biraz sıkışıp kaldım.

Ben hash.txt, sırasıyla her satırında sınırlayıcıları ayrılmış MD5, SHA1 ve Sha5 olarak zararlı karma dosyası içeren binlerce. Aşağıda .txt dosyasından çıkardığım 2 örnek satır var.

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

Niyetim ilk 32 karakteri (MD5 hash) görüntülemektir, böylece çıktı şöyle görünecektir:

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

Herhangi bir fikir?


7
Bu kısa Python'a Giriş'i okuyun ve aşağı doğru kaydırın. "Dize dilimleme" istediğiniz şeydir.
Joel Cornett

11
the_string[:32]
JBernardo

2
Dize dilimleme ve daha önce okumadıysanız dosyaları nasıl açacağınız
César

2
Muhtemelen dizelerin yöntemleri .split()ve .strip()yöntemleriyle de ilgileneceksiniz . Örneğin, md5, sha1, sha5 = line.strip().split("|")tahmin edeceğin şeyi yapar.
DSM

1
Yorumlarınız için teşekkürler arkadaşlar nihayet işe yaradı. Her yöntemi denedim ve TankorSmash'in çalışmaları benim için en uygun gibi görünüyor. Herkesin yardımına minnettarım!
Rising Lee

Yanıtlar:


189

stringÇok kolay bir şekilde 'dilimleyebilirsiniz' , tıpkı bir list:

a_string = 'This is a string'

İlk 4 harfi almak için:

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

Veya son 5:

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

Öyleyse bu mantığı probleminize uygulayarak:

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

3
@ César: Bölünmüş dizenin yalnızca ilk kısmına ihtiyacınız olduğunu göstermek genellikle daha iyidir (ve daha hızlıdır) the_string.split('|', 1)[0].
Eric O Lebigot

16

Bir sınırlayıcı olduğundan, md5'in ne kadar uzun olduğu konusunda endişelenmek yerine bunu kullanmalısınız.

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

Alternatif olarak

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

2
:-) değişken uzunlukta karma için sınırlayıcı malzeme dikkate için 1
Vinayak Kolagi

1

Bir dizenin ilk 2 harfini ve son 2 harfini istiyorsanız, aşağıdaki kodu kullanabilirsiniz: name = "India" name[0:2]="In" names[-2:]="ia"

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.