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


87

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

我的hash.txt文件包含MD5,Sha1和Sha5中成千上万的恶意软件哈希,分别在每行中由定界符分隔。以下是我从.txt文件中提取的2行示例。

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

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

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

有任何想法吗?


7
阅读此Python简介,并向下滚动大约一半。您想要的是“字符串切片”。
乔尔·科内特

11
the_string[:32]
JBernardo 2012年

2
字符串切片和如何打开的文件,如果你没有看过那已经
塞萨尔

2
您可能还会对字符串的.split().strip()方法感兴趣。例如,md5, sha1, sha5 = line.strip().split("|")几乎可以实现您的预​​期。
DSM 2012年

1
谢谢您的评论,我终于可以使用它了。我尝试了每种方法,似乎TankorSmash的作品对我来说最方便。感谢每个人的帮助!
Rising Lee

Answers:


185

您可以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
@César:通常最好(更快)表明您只需要使用分割字符串的第一部分the_string.split('|', 1)[0]
Eric O Lebigot 2012年

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,2012年

0

如果需要字符串的前2个字母和后2个字母,则可以使用以下代码: name = "India" name[0:2]="In" names[-2:]="ia"

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.