Python—使用';继续';(Craigslist发布)

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

我试图在单个Craiglist公寓帖子的属性表中查找特定的文本短语(“单位中的w/d”)。根据该表中列出的其他属性的数量,该短语的位置可能会有所不同。例如,“装置中的w/d”可能位于:

  • 在位置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
    
    我的问题是:

  • 如果attr[I].xpath(“text()”).extract():中的语句“w/d in unit”为false,那么如何让我的
    项[“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"
    

    非常感谢。然而,这一改变并不奏效。我昨天修改了我的原始代码,现在它可以工作了(见下面问题的答案)。很高兴听到这个消息!下次请发布一点源文件。这将大大简化任务。祝您有个美好的一天!