2013-08-29 150 views
0

這是我item.py臨時變量

class SampleItem(Item): 
    title = Field() 
    link = Field() 
    link = Field() 
    code = Field() 

按說我想在我的test.py的東西,有一個像

loc_Con = hxs.select('/tr/td[2]/span/span/span') #for country 
    loc_Reg = hxs.select('/tr/td[2]/span/span') #for region 
    loc_Loc = hxs.select('//tr[3]/td[2]/span/span') #for local 
    items = [] 
    for titles in titles: 
    item = somethingItem() 
    temp[1] = loc_Con.select('text()').extract() 
    temp[2] = loc_Reg.select('text()').extract() 
    temp[3] = loc_Loc.select('text()').extract() 
    temp[1] = temp[1][0] if temp1 else "" 
    temp[2] = temp[2][0] if temp2 else "" 
    temp[3] = temp[3][0] if temp3 else "" 
    item["code"] = "{temp[1]}-{temp[2]}-{temp[3]}".format(temp[1], 
                 temp[2], 
                 temp[3]) 

一個臨時變量,我該怎麼辦,讓我不必添加temp [1] =項目中的字段

+0

你的代碼看起來很奇怪。你的'SampleItem'類有兩個字段名稱「link」。對於'temp [1] = loc_Con.select('text()')。extract()','temp'沒有定義,temp1,temp2和temp3都沒有定義。你能發佈你的真實代碼嗎?並可能解釋你想改變什麼,以便我們可以幫助你修改/修復它 –

+0

對不起,這應該是一個單一的 鏈接=字段()在那裏 我的觀點是,我不想添加temp1 =我的item.py中的字段(),以便它不會被寫入我的CSV文件。在加入temp [1],temp [2],temp [3]到item [「code」]之前,我想要有一個臨時變量來存儲數據 – chano

+0

您不需要。 'item [「code」] = ...'將被分配一個由3個變量創建的新字符串值,但這些變量在循環後將不再被引用,'item [「code」]'的值將會被引用是「獨立」 –

回答

0

您可以在循環中定義任何臨時變量來計算您需要的字符串值item["code"]item["code"]將通過.format()獨立於臨時變量保存新的字符串值。

loc_Con = hxs.select('/tr/td[2]/span/span/span') #for country 
loc_Reg = hxs.select('/tr/td[2]/span/span') #for region 
loc_Loc = hxs.select('//tr[3]/td[2]/span/span') #for local 
items = [] 
for titles in titles: 
    item = somethingItem() 
    temp1 = loc_Con.select('text()').extract() 
    temp2 = loc_Reg.select('text()').extract() 
    temp3 = loc_Loc.select('text()').extract() 
    temp1 = temp1[0] if temp1 else "" 
    temp2 = temp2[0] if temp2 else "" 
    temp3 = temp3[0] if temp3 else "" 
    item["code"] = "{0}-{1}-{2}".format(temp1, 
             temp2, 
             temp3) 

所以不需要添加任何特殊的temp[1] = Field()

+0

這很酷!所以我已經接近我的想法了......謝謝! – chano

+0

確實非常接近。另外,'.format()'語法有時可能不如您的情況容易,比如說'item [「code」] =「 - 」。join([temp1,temp2,temp3])' 「 - 」) –

+0

它會產生相同的輸出嗎? – chano