[Çözüldü] Python Yazıyı Bölme

Başlatan fghty, 07 Aralık 2012 - 18:20:27

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

fghty

MD5(Message-Digest algorithm 5) en yaygın kullanılan şifreleme prototiplerinden bir tanesidir. Ayrıca bu şifreleme türünü henüz kırabilecek bir algoritma bilinmemektedir. Ancak deneme-yanılma yolu dediğimiz bruteforce teknikleri ile MD5 şifre kırıcı programlara rastlanabilir.

Bu yazıyı belli aralıklarla bölmek istiyorum. Örneğin en fazla 25 harf olacak şekilde bölecem. Ama bölmeyi yaparken kelime bozulmasın istiyorum bunu bi türlü beceremedim. Yani 25 har böldüğümüzde Python kelimesini tam almayıp Pyt şeklindeki gibi kelimeyi bozuyor. 25 harfi aşan bu tip durumlarda bir önceki kelimede bölmesini nasıl sağlayabilirim?

Not: Yukarıdaki yazıyı örnek olsun deye yazdım.

ct

split() metodula boşlukları ayıklayıp kelime kelime ayırıp liste halinde elde edebilirsiniz. Parantezler sorun olacaktır onu da split("(") ile biraz değişiklikler yaparak bulabilirsiniz. Bundan sonrası harf sayması ve kelimeyi listeye kabul edip etmeme için yapılacak karşılaştırmalar.

fghty

#!/usr/bin/env python
#-*-coding:utf-8-*-

yazi=open("deneme.txt","r")
oku=yazi.read()
b=0
s=0

while True:
    s += 25
    if s >= len(oku):    # eğer "s" değişkeni son indisi geçtiyse...
        s = len(oku) - 1
    elif oku[s] != " ":    # eğer yazdırılacak karakter dizisinin en sonu boşluk değilse...
        index = oku.rfind(" ", s, 0)  # burada yanlış yapmışım, düzelttim
                                      # (s ile 0' ın yerini değiştirdim)
        if index < 0:    # daha önce boşluk yoksa...
            index = oku.find(" ", s, len(oku))    # daha sonrakini bul
        if index < 0:    # eğer sonra da yoksa...
            index = s    # yapacak birşey yok, olduğu gibi kesiyoruz
                         # (tabi siz kesmemeyi de seçebilirsiniz.
                         # o zaman "index = len(oku)" demeniz gerekir)
        s = index
    print oku[b:s]    # yazdır
    if s == len(oku) - 1:    # eğer son satır da yazdırılmışsa...
        break
    b = s

yazi.close()


Arkadaşın biri bu şekilde kod yazmıştı. Yardımlarınız için teşekkür ederim.