Python Generator kullanmadan çıktı alma

Katılım
18 Ağustos 2018
Mesajlar
6.977
Makaleler
4
Çözümler
47
Yer
Denizli
[CODE lang="python" title="Python"]# -*- coding: utf-8 -*-
from urllib import parse
import scrapy
from scrapy.linkextractors import LinkExtractor
import codecs

class WanikaniSpider(scrapy.Spider):
name = 'japandict'
allowed_domains = ['www.wanikani.com']
url = ('https://www.wanikani.com/kanji/')
start_urls = []
kanjiler = ["悪", "安", "以", "意", "医"]
liste=[]
for kanji in kanjiler:
liste.append(kanji)
nurl = url + kanji
start_urls.append(nurl)




def parse(self, response):
print(response.url)
kanjiicon = response.xpath('//*[@id="main"]/body/div[1]/div[3]/div/div/header/h1/span/text()').getall()
meanings = response.xpath('//*[@id="main"]/body/div[1]/div[3]/div/div/header/h1/text()').getall()
reading = response.xpath('//*[@id="reading"]/div')
for onkun in reading:
onyomi= onkun.xpath('//*[@id="reading"]/div/div[1]/p/text()').getall()
kunyomi= onkun.xpath('//*[@id="reading"]/div/div[2]/p/text()').getall()
for x in onyomi:
print(x)

[/CODE]
Bu şekilde bir Scrapy Spider'ı oluşturdum. En son kısımda print(x) yaptığımda sorunsuz bir şekilde çıktı alıyorum. Fakat bunun çıktısını dosya olarak almak için return veya yield ile dönmek gerekiyor. Bu generatorlar ile döndüğümde ise satır boşlukları oluyor virgüller birbirine giriyor vs.
Bunu nasıl düzeltebilirim?
 
Son düzenleyen: Moderatör:
Kod:
print( x , end="" , flush=True )
with open("sonuclar.txt" , "w" , encoding="utf-8") as file: ( veya kanjilere uygun utf ne ise.)
    file.write(x)
Ayrı ayrı düşünün tabi bunları sorununuza cevap olarak. file.wrirtelines da işinizi görebilir, denemek lazım.
 
İşe yaradı ancak sadece tek bir satır yazdı. Bütün cevapları yazmıyor yani. Onu nasıl düzelteceğiz?
 
Python:
with open("sonuclar.txt" , "w" , encoding="utf-8") as file: ( veya kanjilere uygun utf ne ise.)
    for line in x:
        file.write(line +'\n')


Çıktı tam olarak nasıl bilmiyorum ama bu şekilde işe yarayabilir.
 
İşe yaradı ancak sadece tek bir satır yazdı. Bütün cevapları yazmıyor yani. Onu nasıl düzelteceğiz?

Python:
#dosyayı diğer değişkenleri olşturduğunuz gibi parse fonksiyonunun dışında oluşturun
file = open("sonuclar.txt","a",encoding="utf-8")


#print yaptığınız döngüde dosyaya yazma işlemini yapın
for x in onyomi:
    #print(x)
    self.file.write(x + "\n")

#döngüden sonra dosyayı kapatın   
self.file.close()
 
Çok teşekkürler sorun çözüldü. Günlerdir bunu araştırıyordum birçok şey denedim ama yanlış şeyler denemişim sanırım. Artık her böyle hata ile karşılaştığımda sizi hatırlayacağım sanırım.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…