Как отобразить первые несколько символов строки в Python?

87

Привет, я только начал изучать Python, но сейчас я как бы застрял.

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

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

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

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

Любые идеи?

Восходящий Ли
источник
7
Прочтите это краткое введение в Python и прокрутите его примерно до половины. «Нарезка строк» ​​- это то, что вам нужно.
Joel Cornett
11
the_string[:32]
JBernardo
2
Нарезка строк и как открывать файлы, если вы этого еще не читали
Сезар
2
Вы , вероятно , также будут заинтересованы в .split()и .strip()методов строк. Например, md5, sha1, sha5 = line.strip().split("|")делает в значительной степени то, что можно было бы предположить.
DSM
1
Спасибо за комментарии, ребята, я наконец-то заработал. Я перепробовал все без исключения методы, и мне кажется, что «ТанкорСмаш» наиболее удобен для меня. Я ценю помощь каждого!
Rising Lee

Ответы:

186

Вы можете 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]
César
3
@ César: обычно лучше (и быстрее) показать тот факт, что вам нужна только первая часть разделенной строки с помощью 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 за использование разделителей для хэша переменной длины :-)
Винаяк Колаги
0

Если вам нужны первые 2 буквы и последние 2 буквы строки, вы можете использовать следующий код: name = "India" name[0:2]="In" names[-2:]="ia"

Даршан Джайн
источник