[]

Python - loop yazmak

Merhaba,

Bir arastirma projesi uzerine calisiyorum ve elimde 9000'i askin uluslararsi kadin ve erkek isimleri var. Bunlari cinsiyetlerine gore kodlamam lazim. Ornegin kadin ismi icin 1, erkek is mi icin 2, unisex olan veya anlasilmaz bir isim icin de 0 diyebiliriz.

Bu isimlerin hepsi bir excel file'da string variable olarak duruyor.

Python gender-guesser 0.4.0 package'ini yukledim ve tek tek isimleri yazip oradan manuel olarak her bir ismi siniflandirabiliyorum. Ama yapmak istedigim bir loop olusturup, her bir ismi sirayla her satirdan cagirip, cinsiyetini kodlayip, bunu da ayri bir excel veya txt file'ina yazmak.

Bunun icin 1) isimlerin yazili oldugu dosyayi nasil cagirip, her bir satiri nasil okuturum,
2) isimleri kodladiktan sonra ayri bir dosyaya nasil yazdiririm yardima ihtiyacim var.


Su anda tek yapabildigim su kodu kullanip manuel olarak search etmek:

>>> import gender_guesser.detector as gender
>>> d = gender.Detector()
>>> print(d.get_gender(u"Bob"))
male

Simdiden binlerce tesekkurler!

 
Python bilmiyorum ama yol göstermeye çalışayım.

1-) Bir paket bulup (mesela excel dosya okuma paketi diye aratabilirsin) onun aracılığı ile dosyayı çağır, içindeki satır sayısını hesapla.
2-) Bir for döngüsü yazıp 1. satırdan sonuncu satıra kadar isimleri çektir, döngünün içinde cinsiyet belirleme ve ikinci dosyaya yazma işlemlerini yaptırırsın.

Google aramalarını İngilizce yaparsan daha çok sonuç gelir.

Örnek : stackoverflow.com

* Üstte excelden okuyup metin belgesine yazma anlatılmış ama yine de yardımcı olur, işin ilk kısmını yaparsın.
  • hayirsiz  (15.03.17 08:19:32 ~ 08:21:33) 
Ben python biliyordum ama unuttum syntax'i:)

En kolay nasıl yapılır yazayım ama (kolaydan kastım minimum kod bilgisi ile)

Önce excelden text dosyası yap isimleri, text ile çalışmak daha kolay. Sonra satır sayısını hesapla. For döngüsü çevir (i satır numarası olacak, 1 den toplam satır sayısına) ve sonuçları başka bir txt dosyasına satır satır yazdır. Sonra iki dosyayı excelde birleştir.

1,2,0 olayı için if kullanabilirsin. Eğer bu paket cinsiyeti bilemeyince hata veriyorsa error handling yapman lazım ki kolay.

try:
//gender fonksiyonu
except
//error gelince ne olacağı yani senin durumunda gender_code=0
  • yakuza123  (15.03.17 10:57:31) 
Oncelikle cevaplar icin cok tesekkurler!

Sonunda calisir bir script yazabildim. Asagiya kopyaliyorum ki belki birilerinin ileride isine yarayabilir. Ben gender_guesser package'ini kullanarak bircok ismin cinsiyetini kodlayabildim. En buyuk sikinti python'a her bir satirin yeni bir input oldugunu anlatmak oldu (asagida nasil hallettigimi gorebilirsiniz). Sublime Text'ten kopyaladigim script'i asagida bulabilirsiniz. Ayrica yardim teklifinde bulunan sevgili compumaster'a binlerce tesekkurler!


import gender_guesser.detector as gender
d = gender.Detector()
d = gender.Detector(case_sensitive=False)

text_file=open("names3.txt", "r")

output_file=open("output2.csv", "w")

lines=text_file.readlines()
text_file.close()

for line in lines:
if line.endswith('\n'):
line=line[:-1]
print(line)
output_file.write(d.get_gender(line))
output_file.write('\n')

output_file.close()
  • balli borek  (16.03.17 00:56:18 ~ 00:57:04) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.