Kod ile Metin İşleme !Acil yardım

Başlatan omerfarukaydin, 07 Ağustos 2018 - 09:26:27

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

omerfarukaydin

Herkese Merhabalar,

Staja başladım. verilen ilk işte takıldım. Tecrübenize ve bilginize ihtiyacım var.

Hem android hem ios için bir uygulama yazıldı. Dil dosyası için ikisininde ayrı ayrı key -> text dosyasını verdiler ve bunları ayrıştırıp; birbirlerinde olmayan, bir keyin olup birden fazla text'e bağlı olan veya tam tersi bir key'in birden fazla text'i olması kontrol edip varsa bunları çıkartıp vermemi istiyorlar. bir key birden fazla tekrar etmiş olabilir veya bir text birden fazla tekrar etmiş olabilir bunları göz önüne çıkarmam lazım.

Elle yapmak zaman alıcak. Excel'de yapmak beni uğraştırcak -ki sağlıklı bir sonuç bulamadım araştırınca.

Kod yazıp ayıklamak istiyorum. Tavsiyesi olan, nasıl yapılır bilen var mı?

programmer

"!Acil yardım  diye bşılk atmak genllikle forumlarda pek hoş karşılanmayan bir üslüptur. Ödev en nihayet sizin ödevinizidir, ve sizin aciliyetiniz başkasını ilgilendirmjek zorunda değil. Sizin daha hangi dili az da olsa bildiğinizi görmeden size nasıl yardımcı olabilirler ki? Hele bildiğiniz dilde bir şeyler ortya koyun, "şurasını çözemedim, yardım edebilir misiniz? deyin, bir bakan bulunur. Sonuçta ödevler bir şeyler öğrenmek içindir, hem ben bir şey öğrenme zahmetine katlanmayayım, hem de çabucak ödevim hazır olsun zihniyetindeyseniz, bunun  size uzun vadede iş hayatında  zarar getireceğini düşünüyorum.


lafurus

Alıntı yapılan: programmer - 07 Ağustos 2018 - 18:12:26
"!Acil yardım  diye bşılk atmak genllikle forumlarda pek hoş karşılanmayan bir üslüptur. Ödev en nihayet sizin ödevinizidir, ve sizin aciliyetiniz başkasını ilgilendirmjek zorunda değil. Sizin daha hangi dili az da olsa bildiğinizi görmeden size nasıl yardımcı olabilirler ki? Hele bildiğiniz dilde bir şeyler ortya koyun, "şurasını çözemedim, yardım edebilir misiniz? deyin, bir bakan bulunur. Sonuçta ödevler bir şeyler öğrenmek içindir, hem ben bir şey öğrenme zahmetine katlanmayayım, hem de çabucak ödevim hazır olsun zihniyetindeyseniz, bunun  size uzun vadede iş hayatında  zarar getireceğini düşünüyorum.

Burada yazanlar sonuna kadar haklıdır. Ama biraz gaddardır kanımca, çünkü böyle bir kod yazmak istiyorum, nasıl yazılır tavsiye istiyorum tarzı bir soru sormuş başlığı açan. Size yol gösterici olabilecek Python3 kullanarak yazdığım bir kodu paylaşıyorum, bu kodlar yaptığı işi kendi içinde sanırım hatasız yapıyor, ama %90 ihtimalle sizin tam olarak istediğiniz işi yapmayacaktır. Kendi özel durumunuza göre değiştirebilirsiniz:

def dosyakarsilastir():
aynılar = []
kdosya1 = input("Karşılaştırmak istediğiniz birinci dosyanın yolu = ")
kdosya2 = input("Karşılaştırmak istediğiniz ikinci dosyanın yolu = ")
with open(kdosya1, "r") as f1:
dosyabi = f1.readlines()
with open(kdosya2, "r") as f2:
dosyaii = f2.readlines()

for i in dosyabi:
for j in dosyaii:
if i == j and i.startswith("\n") != True :
aynılar.append(j)
else:
continue
print("İki dosyada da olan satır sayısı:", len(aynılar))
print("İki dosyada da olan satırlar\n", aynılar)
giris()

def kelimebul():
dosya = input("İçinde arama yapmak istediğiniz dosyayının yolunu girin = ")
kelime = input("Dosyanın içinde bulmak istediğiniz kelimeyi girin = ")
kelime = kelime.lower() #burada küçük-büyük harf duyarlılığını kaldırıyoruz
#programın küçük ve büyük harflere duyarlı olmasını istiyorsanız lower olan
#kısımları silebilirsiniz

with open(dosya, "r") as f:
dosyai = f.read()
dosyai = dosyai.lower()
print("Dosya içinde {} kelimesi, {} defa geçiyor.".format(kelime, dosyai.count(kelime)))
giris()

def giris():
islem = input(''' İki dosyanın içeriğini karşılaştırmak için 1,
Bir dosyanın kelimenin kaç defa geçtiğini bulmak için 2 girin
Çıkmak için 3'e basın:''')

if islem == "1":
dosyakarsilastir()
elif islem == "2":
kelimebul()
else:
exit()

giris()

programmer

#3
" Gaddar" değil de gerçekçi değilim. :) Güzel bakın kendiniz bir şeyler düşünüp yazmışınız. Baştan aslında kodunuzu yazasanız yardım almanız daha kolay olur. Python daha iyi bilen arkadaşlar yardımcı olacaktır sanıyorum.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 07 Ağustos 2018 - 18:56:49

Dosyalr örneğin şöyle mi, veya ayırıcı key ile text'i ayırıcı karekter nedir?
key text
key=text
key;text
bunun soruda verilmiş olması gerek miyor mu?


.py

konuyu güzel anlatmışssınız ama kaynak ile ilgili bir detay yok
[mention=640500]@programmer[/mention] dediği gibi

key text
key=text
key;text


üzerinde çalışacağımız girdiler hangi düzende yazılmış. kaynağı paylaşırsanız şıpadanak yardımcı oluruz :)

programmer

Bu arada ödev çözmek bahensiyle Pyhon'un da ufaktan çalışıyorum. :)
Python'da dizgi içinde dizgi(string aramak için bir str class'ının bir fonksiyonu var o yardımcı olabilir.



ayrac=" "
finddex=str.find(ayrac,len(satir))

bu key ile metini ayrıran karakterin indisi 0 ila (findex-1) key veya birinci sıradaki değer, finindex+1 ila len(satir) indsileri arasında ise ikinci değer, (artık nasıl sırlanmış ise önce key ise birinci key)
ayrac değişkenin içini dosyalra bakarak bulabilirsiniz, tab ise  "\t" veya bir key alt satıra metin olabilir. o zaman  "\n" olabilir, windows'da, linuxda ve mac'da metin dosyalrında  satır sonları farklıdır ona dikkat edersiniz.


.py

mesela:

notebook:defter
book:kitap


find ile book kelimesini aradığınızda iki değer dönderecektir gerçi find bunu sade haliyle kendi başına yapamaz ama neyse üzerinde çalışmak gerekir. ama bizim aradığımız book kelimesi sadece bir yerde var ozaman find doğru fonksiyon değil bunun yerine kaynağı satır satır okuyup startswith fonksiyonunu kullanmak daha mantıklı olur.

programmer

Alıntı yapılan: .py - 08 Ağustos 2018 - 02:23:52
mesela:

notebook:defter
book:kitap


find ile book kelimesini aradığınızda iki değer dönderecektir gerçi find bunu sade haliyle kendi başına yapamaz ama neyse üzerinde çalışmak gerekir. ama bizim aradığımız book kelimesi sadece bir yerde var ozaman find doğru fonksiyon değil bunun yerine kaynağı satır satır okuyup startswith fonksiyonunu kullanmak daha mantıklı olur.
find'i ben sadece key ile text'i ayırmak için önerdim, sonra tabii bütün dosyada arama yapılırken dediğiniz gibi belki starswitch daha doğru olabilir, ama key text'i çekmek için find yeterli.