Як відобразити перші кілька символів рядка в Python?


88

Привіт, я щойно почав вивчати Python, але я зараз застряг.

У мене є hash.txtфайл, що містить тисячі хешів шкідливого програмного забезпечення в MD5, Sha1 та Sha5 відповідно, розділені розділювачами в кожному рядку. Нижче наведено 2 приклади рядків, які я витягнув із файлу .txt.

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

Я маю намір показати перші 32 символи (хеш MD5), щоб результат виглядав приблизно так:

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

Будь-які ідеї?


7
Прочитайте цей короткий вступ до Python і прокрутіть приблизно наполовину. "Нарізка рядка" - це те, що ви хочете.
Джоел Корнетт,

11
the_string[:32]
JBernardo

2
Нарізка рядків і як відкрити файли, якщо ви цього ще не читали
Сесар

2
Ви , ймовірно , також будуть зацікавлені в .split()і .strip()методів рядків. Наприклад, md5, sha1, sha5 = line.strip().split("|")робить майже те, що можна було б здогадатися.
DSM

1
Дякую за ваші коментарі, хлопці, нарешті, я запрацював. Я випробував усі методи, і, здається, роботи TankorSmash для мене найбільш зручні. Я ціную допомогу кожного і кожного!
Rising Lee

Відповіді:


187

Ви можете stringдуже легко "нарізати" , як і витягнути предмети з list:

a_string = 'This is a string'

Щоб отримати перші 4 літери:

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

Або останні 5:

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

Отже, застосовуючи цю логіку до вашої проблеми:

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

1
the_string.split ('|') [0]
Сесар,

3
@ Сезар: як правило, краще (і швидше) показати той факт, що вам потрібна лише перша частина розщепленого рядка з the_string.split('|', 1)[0].
Eric O Lebigot

16

Оскільки є роздільник, вам слід використовувати його, а не турбуватися про те, скільки часу md5.

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

Як варіант

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

2
+1 за розгляд розділювача для хешу змінної довжини :-)
Vinayak Kolagi

0

Якщо вам потрібні перші 2 літери та останні 2 літери рядка, тоді ви можете використовувати такий код: name = "India" name[0:2]="In" names[-2:]="ia"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.