python 保留空项的列表

python list keeping empty items

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

想要的结果是:

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,[]))

这几乎可以工作,但我得到了一个列表列表 returned:

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

而不是想要的:

blah,blah,,blah

如果我试图展平列表:

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

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

blah,blah,blah

那一串列表应该够了,还有一步:

>>> 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,所以我不确定你是否真的想要一个字符串,但这里有两个选项。