Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保留空项的python列表_Python_List_Css Selectors_Scrapy - Fatal编程技术网

保留空项的python列表

保留空项的python列表,python,list,css-selectors,scrapy,Python,List,Css Selectors,Scrapy,我有一个HTML正文,有4个div,div中有文本。我使用Scrapy选择器删除文本并将其写入csv。但是,如果div没有文本,选择器将跳过它。这是不好的,因为结果需要与csv中的每个列匹配。我需要空div来返回空字符串 预期结果是: blah,blah,,blah 由于这一要求,这不起作用: csvfile.writerow(Selector(text=Z).xpath('//div/text()').extract()) 给予: blah,blah,blah 其中Z是html主体 目前

我有一个HTML正文,有4个div,div中有文本。我使用Scrapy选择器删除文本并将其写入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

这个列表应该足够了,还有一个步骤:

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

只需添加一个
,'。加入(
理解,您就很好了。csv.writerow()接受一个列表。。。它将根据适当的方言将其展平。虽然您可以在理解中使用
'.join(i)
,而不是三元运算符。最终代码是:
x=[i[0]if i else'',用于jl]csvfile.writerow(x)
。我不知道它在做什么,但如果它起作用,它就会起作用。谢谢