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