【问题标题】:How to display the first few characters of a string in Python?如何在 Python 中显示字符串的前几个字符?
【发布时间】:2012-07-27 17:29:49
【问题描述】:

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

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

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

我的意图是显示前 32 个字符(MD5 哈希),因此输出将如下所示:

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

有什么想法吗?

【问题讨论】:

  • 阅读brief Introduction to Python,然后向下滚动大约一半。 “字符串切片”就是你想要的。
  • the_string[:32]
  • 字符串切片以及如何打开文件(如果您还没有阅读)
  • 您可能还会对字符串的.split().strip() 方法感兴趣。例如,md5, sha1, sha5 = line.strip().split("|") 的作用与您猜想的差不多。
  • 感谢你们的 cmets 伙计们,我终于让它工作了。我尝试了每一种方法,似乎 TankorSmash 的作品对我来说最方便。感谢大家的帮助!

标签: python python-2.7


【解决方案1】:

您可以非常轻松地“切片”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

【讨论】:

  • @César:通常更好(并且更快)表明您只需要使用the_string.split('|', 1)[0] 分割字符串的第一部分。
【解决方案2】:

既然有分隔符,你应该使用它而不用担心 md5 有多长。

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

或者

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

【讨论】:

  • +1 用于考虑可变长度哈希的分隔符 :-)
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-22
    • 2016-03-09
    • 2011-07-08
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多