Python - 使用“继续”循环通过 FOR 语句(Craigslist 发布)
Posted
技术标签:
【中文标题】Python - 使用“继续”循环通过 FOR 语句(Craigslist 发布)【英文标题】:Python - looping through a FOR statement using 'continue' (Craigslist posting) 【发布时间】:2017-02-19 17:16:45 【问题描述】:我正在尝试在单个 Craiglist 公寓发布的属性表中查找特定的文本短语('w/d in unit')。该短语的位置可能会有所不同,具体取决于该表中列出了多少其他属性。例如,“w/d in unit”可能位于:
在第 3 位:
猫没事; 狗没事; w/d 单位在位置 2:
猫没事; w/d 单位; 公寓为了说明位置的可变性,我编写了 Python 代码:
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
我的问题是:
-
当声明
if 'w/d in unit' in attr[i].xpath("text()").extract():
为假时,如何让我的item["WasherDryer"]
存储值“None”?
我可以把它放在else
语句(where item["WasherDryer"] = "None")
下,但是循环不会继续迭代到下一个i
。
【问题讨论】:
【参考方案1】:您可以使用 extract_first 并将默认值传递给它。 以下是它的使用方法:
for i in range (0, len(attr)):
item["washerDryer"] = attr[i].xpath("text()").extract_first(default='None')
【讨论】:
谢谢!然而,这种改变并没有奏效。我昨天修改了我的原始代码,现在它可以工作了(见下面问题的答案)。 很高兴听到这个消息!下次请发一点源文件。这将大大简化任务。祝你有美好的一天!【参考方案2】:我昨天修改了我的原始代码。我意识到在进行迭代之前,我首先需要确定文本“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"
【讨论】:
以上是关于Python - 使用“继续”循环通过 FOR 语句(Craigslist 发布)的主要内容,如果未能解决你的问题,请参考以下文章