Python—使用';继续';(Craigslist发布)
我试图在单个Craiglist公寓帖子的属性表中查找特定的文本短语(“单位中的w/d”)。根据该表中列出的其他属性的数量,该短语的位置可能会有所不同。例如,“装置中的w/d”可能位于:Python—使用';继续';(Craigslist发布),python,for-loop,xpath,iteration,continue,Python,For Loop,Xpath,Iteration,Continue,我试图在单个Craiglist公寓帖子的属性表中查找特定的文本短语(“单位中的w/d”)。根据该表中列出的其他属性的数量,该短语的位置可能会有所不同。例如,“装置中的w/d”可能位于: 在位置3: 猫没问题 狗没问题 单位为w/d 在位置2: 猫没问题 单位为w/d 公寓 为了说明位置的可变性,我编写了Python代码: attr = response.xpath("//*[@class='attrgroup']/span") for i in range (0, len(a
- 猫没问题李>
- 狗没问题李>
- 单位为w/d
- 猫没问题李>
- 单位为w/d李>
- 公寓
attr = response.xpath("//*[@class='attrgroup']/span")
for i in range (0, len(attr)):
if 'w/d in unit' in attr[i].xpath("text()").extract():
item["washerDryer"] = attr[i].xpath("text()").extract()
else:
continue
return item
我的问题是:
项[“washerryer”]
存储值“None”
我可以把它放在else
语句(其中item[“washerryer”]=“None”)
下,但是循环不会继续迭代到下一个I
您可以先使用extract_并将默认值传递给它。 以下是如何使用它:
for i in range (0, len(attr)):
item["washerDryer"] = attr[i].xpath("text()").extract_first(default='None')
我昨天修改了我原来的代码。我意识到,在进行迭代之前,我首先需要确定文本“w/d in unit”是否存在 我们在这里所做的是: 1) 查看文本“w/d in unit”是否出现在字符串“attr”的任何位置 2) 如果是,则继续迭代 3) 如果否,则自动标记项目['washerDryer']='None'
if 'w/d in unit' in str(attr):
for i in range (0, len(attr)):
if 'w/d in unit' in attr[i].xpath("text()").extract():
item["washerDryer"] = attr[i].xpath("text()").extract()
else:
continue
else:
item["washerDryer"] = "None"
非常感谢。然而,这一改变并不奏效。我昨天修改了我的原始代码,现在它可以工作了(见下面问题的答案)。很高兴听到这个消息!下次请发布一点源文件。这将大大简化任务。祝您有个美好的一天!