2013-08-29 123 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