Làm thế nào để hiển thị một vài ký tự đầu tiên của một chuỗi trong Python?


87

Xin chào, tôi mới bắt đầu học Python nhưng hiện tại tôi đang gặp khó khăn.

Tôi có hash.txttệp chứa hàng nghìn mã băm phần mềm độc hại trong MD5, Sha1 và Sha5 tương ứng được phân tách bằng dấu phân cách trong mỗi dòng. Dưới đây là 2 dòng ví dụ tôi trích xuất từ ​​tệp .txt.

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

Ý định của tôi là hiển thị 32 ký tự đầu tiên (MD5 băm) để đầu ra sẽ giống như sau:

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

Có ý kiến ​​gì không?


7
Đọc phần Giới thiệu ngắn gọn về Python này và cuộn xuống nửa chừng. "Cắt chuỗi" là những gì bạn muốn.
Joel Cornett,

11
the_string[:32]
JBernardo

2
Chuỗi cắt và làm thế nào để mở tập tin nếu bạn chưa đọc mà đã
César

2
Có thể bạn cũng sẽ quan tâm đến các .split().strip()phương thức của chuỗi. Ví dụ, md5, sha1, sha5 = line.strip().split("|")thực hiện khá nhiều điều bạn đoán.
DSM

1
Cảm ơn những lời nhận xét của bạn, cuối cùng tôi đã có nó để làm việc. Tôi đã thử từng phương pháp và có vẻ như TankorSmash hoạt động thuận tiện nhất cho tôi. Tôi đánh giá cao sự giúp đỡ của từng người và mọi người!
Rising Lee,

Câu trả lời:


185

Bạn có thể 'cắt' một cái stringrất dễ dàng, giống như bạn lấy các mục từ list:

a_string = 'This is a string'

Để có 4 chữ cái đầu tiên:

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

Hoặc 5 cuối cùng:

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

Vì vậy, áp dụng logic đó cho vấn đề của bạn:

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

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

3
@ César: nói chung là tốt hơn (và nhanh hơn) để hiển thị thực tế rằng bạn chỉ cần phần đầu tiên của chuỗi được chia nhỏ với the_string.split('|', 1)[0].
Eric O Lebigot,

16

Vì có một dấu phân cách, bạn nên sử dụng nó thay vì lo lắng về việc md5 dài bao nhiêu.

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

Ngoài ra

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

2
1 để xem xét những thứ delimiter cho chiều dài biến băm :-)
Vinayak Kolagi

0

Nếu bạn muốn 2 chữ cái đầu tiên và 2 chữ cái cuối cùng của chuỗi thì bạn có thể sử dụng mã sau: name = "India" name[0:2]="In" names[-2:]="ia"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.