如何在Python中显示字符串的前几个字符?

Ris*_*Lee 81 python python-2.7

嗨,我刚开始学习Python,但我现在有点卡住了.

我的hash.txt文件包含MD5,Sha1和Sha5中的数千个恶意软件哈希,分别用每行中的分隔符分隔.下面是我从.txt文件中提取的2个示例行.

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

我的目的是显示前32个字符(MD5哈希),所以输出看起来像这样:

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

有任何想法吗?

Tan*_*ash 174

您可以string非常轻松地"切片" ,就像您从以下项目中提取物品一样list:

a_string = 'This is a string'
Run Code Online (Sandbox Code Playgroud)

要获得前4个字母:

first_four_letters = a_string[:4]
>>> 'This'
Run Code Online (Sandbox Code Playgroud)

或者最后5:

last_five_letters = a_string[-5:]
>>> 'string'
Run Code Online (Sandbox Code Playgroud)

所以将这个逻辑应用于您的问题:

the_string = '416d76b8811b0ddae2fdad8f4721ddbe|d4f656ee006e248f2f3a8a93a8aec5868788b927|12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f '
first_32_chars = the_string[:32]
>>> 416d76b8811b0ddae2fdad8f4721ddbe
Run Code Online (Sandbox Code Playgroud)

  • @César:通常更好(和更快)地表明你只需要使用`the_string.split('|',1)[0]`来分割字符串的第一部分. (3认同)

Joh*_*ooy 13

由于有分隔符,你应该使用它,而不是担心md5有多长.

>>> s = "416d76b8811b0ddae2fdad8f4721ddbe|d4f656ee006e248f2f3a8a93a8aec5868788b927|12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f"
>>> md5sum, delim, rest = s.partition('|')
>>> md5sum
'416d76b8811b0ddae2fdad8f4721ddbe'
Run Code Online (Sandbox Code Playgroud)

另外

>>> md5sum, sha1sum, sha5sum = s.split('|')
>>> md5sum
'416d76b8811b0ddae2fdad8f4721ddbe'
>>> sha1sum
'd4f656ee006e248f2f3a8a93a8aec5868788b927'
>>> sha5sum
'12a5f648928f8e0b5376d2cc07de8e4cbf9f7ccbadb97d898373f85f0a75c47f'
Run Code Online (Sandbox Code Playgroud)

  • +1考虑可变长哈希的定界符:-) (2认同)