保存空项目的python列表

时间:2015-04-09 01:52:50

标签: python list css-selectors scrapy

我有一个带有4个div的HTML正文,其中包含div中的文本。我使用Scrapy Selectors删除文本并将其写入csv。但是,如果div没有文本,则选择器会跳过它。这很糟糕,因为结果需要匹配csv中的每一列。我需要空div来返回空字符串。

期望的结果是:

blah,blah,,blah

由于此要求,这不起作用:

csvfile.writerow(Selector(text=Z).xpath('//div/text()').extract())

,并提供:

blah,blah,blah

其中Z是html正文。

目前的代码是:

for sl in Selector(text=Z).xpath('//div'):
    g = sl.xpath('./text()').extract()
    jl.append(g)

csvfile.writerow(sum(jl,[]))

这几乎有效,但我得到了一份返回的列表:

[u'blah'],[u'blah'],[],[u'blah']

而不是所期望的:

blah,blah,,blah

如果我试图压扁列表:

csvfile.writerow(sum(jl,[]))

我回到了我开始的地方,从列表中删除了空字符串。

blah,blah,blah

1 个答案:

答案 0 :(得分:2)

列表清单应该足够了,还有一步:

>>> e  = [u'blah'],[u'blah'],[],[u'blah']
>>> [i[0] if i else '' for i in e]
['blah', 'blah', '', 'blah']

如果您需要单个字符串中的所有这些元素:

>>> ','.join(i[0] if i else '' for i in e)
'blah,blah,,blah'

csv.writerow()需要一个list,所以我不确定你真的想要一个字符串,但这里有两个选项。