Bagaimana cara menampilkan beberapa karakter pertama dari sebuah string dengan Python?

89

Hai, saya baru mulai belajar Python tetapi saya agak mandek sekarang.

Saya memiliki hash.txtfile yang berisi ribuan hash malware di MD5, Sha1 dan Sha5 yang masing-masing dipisahkan oleh pembatas di setiap baris. Di bawah ini adalah 2 contoh baris yang saya ekstrak dari file .txt.

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

Maksud saya adalah menampilkan 32 karakter pertama (hash MD5) sehingga hasilnya akan terlihat seperti ini:

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

Ada ide?

Meningkatnya Lee
sumber
7
Baca Pengantar singkat tentang Python ini , dan gulirkan sekitar setengahnya. "Mengiris tali" adalah yang Anda inginkan.
Joel Cornett
11
the_string[:32]
JBernardo
2
Mengiris string dan bagaimana membuka file jika Anda belum membacanya
César
2
Anda mungkin juga akan tertarik dengan .split()dan .strip()metode string. Misalnya, md5, sha1, sha5 = line.strip().split("|")melakukan apa yang Anda duga.
DSM
1
Terima kasih atas komentar Anda, saya akhirnya berhasil. Saya mencoba setiap metode dan sepertinya TankorSmash bekerja paling nyaman bagi saya. Saya menghargai bantuan setiap orang!
Rising Lee

Jawaban:

189

Anda dapat 'mengiris' dengan stringsangat mudah, seperti Anda menarik item dari list:

a_string = 'This is a string'

Untuk mendapatkan 4 huruf pertama:

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

Atau 5 terakhir:

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

Jadi, terapkan logika itu ke masalah Anda:

the_string = '416d76b8811b0ddae2fdad8f4721ddbe|d4f656ee006e248f2f3a8a93a8aec5868788b927|12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f '
first_32_chars = the_string[:32]
>>> 416d76b8811b0ddae2fdad8f4721ddbe
TankorSmash
sumber
3
@ César: biasanya lebih baik (dan lebih cepat) untuk menunjukkan fakta bahwa Anda hanya perlu bagian pertama dari string yang dipisahkan dengan the_string.split('|', 1)[0].
Eric O Lebigot
16

Karena ada pembatas, Anda harus menggunakannya daripada mengkhawatirkan tentang berapa panjang md5 tersebut.

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

kalau tidak

>>> md5sum, sha1sum, sha5sum = s.split('|')
>>> md5sum
'416d76b8811b0ddae2fdad8f4721ddbe'
>>> sha1sum
'd4f656ee006e248f2f3a8a93a8aec5868788b927'
>>> sha5sum
'12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f'
John La Rooy
sumber
2
1 untuk mempertimbangkan hal-hal pembatas untuk hash panjang variabel :-)
Vinayak Kolagi
1

Jika Anda menginginkan 2 huruf pertama dan 2 huruf terakhir dari sebuah string maka Anda dapat menggunakan kode berikut: name = "India" name[0:2]="In" names[-2:]="ia"

Darshan Jain
sumber