Pythonで文字列の最初の数文字を表示するにはどうすればよいですか?


87

こんにちは私はPythonを学び始めたばかりですが、今はちょっと行き詰まっています。

私はhash.txtそれぞれの行に区切り文字で区切られたMD5、SHA1とSha5におけるマルウェアハッシュの数千を含むファイルを。以下は、.txtファイルから抽出した2行の例です。

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

私の意図は、最初の32文字(MD5ハッシュ)を表示して、出力が次のようになるようにすることです。

416d76b8811b0ddae2fdad8f4721ddbe 56a99a4205a4d6cab2dcae414a5670fd

何か案は?


7
このPythonの簡単な紹介を読み、半分ほど下にスクロールします。「ストリングスライシング」はあなたが望むものです。
Joel Cornett 2012

11
the_string[:32]
JBernardo 2012

2
文字列のスライシングとどのように開いているファイルには、あなたがまだ読んでいない場合
セザール

2
あなたはおそらく文字列の.split().strip()メソッドにも興味があるでしょう。たとえば、md5, sha1, sha5 = line.strip().split("|")あなたが推測することをほぼ実行します。
DSM

1
コメントありがとうございます。ようやく動作するようになりました。私はすべての方法を試しましたが、TankorSmashの作品が私にとって最も便利なようです。皆様のご協力に感謝いたします!
ライジングリー

回答:


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
[0] | the_string.split( '')
セザール

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"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.