Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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中跨多个非统一表返回一次数据迭代(使用bs4)?_Python_Beautifulsoup - Fatal编程技术网

在python中跨多个非统一表返回一次数据迭代(使用bs4)?

在python中跨多个非统一表返回一次数据迭代(使用bs4)?,python,beautifulsoup,Python,Beautifulsoup,我试图遍历一系列表,这些表中的数据不是统一输入的。我正在使用python和bs4 这些表格中包含立法信息——何时送交总督(或否)、何时签署(或否)、何时被否决(或否) 我只想返回以下内容:(交付/签署/否决和日期)。或,(未交付/未签署/未否决且无日期)。问题是,当我遍历列表时,它遍历每一行并返回每一行的结果。我希望代码在任一场景完成时停止,并且只返回一对结果。见下文: tablebody=soup.select_one(".table.c-bill--actions-

我试图遍历一系列表,这些表中的数据不是统一输入的。我正在使用python和bs4

这些表格中包含立法信息——何时送交总督(或否)、何时签署(或否)、何时被否决(或否)

我只想返回以下内容:(交付/签署/否决和日期)。或,(未交付/未签署/未否决且无日期)。问题是,当我遍历列表时,它遍历每一行并返回每一行的结果。我希望代码在任一场景完成时停止,并且只返回一对结果。见下文:

        tablebody=soup.select_one(".table.c-bill--actions-table > tbody")
        for item in tablebody.select("td"):
            
            if "delivered to governor" in item.text:
                transfer_list.append("delivered to governor")
                transfer_list.append(item.find_previous("td").text)
            else:
                transfer_list.append("not delivered")
                transfer_list.append("no date")
                
        tablebody=soup.select_one(".table.c-bill--actions-table > tbody")
        for item in tablebody.select("td"):
            
            if "signed" in item.text:
                transfer_list.append("signed")
                transfer_list.append(item.find_previous("td").text)
                
            else:
                transfer_list.append("not signed")
                transfer_list.append("no date")
                             
        
        tablebody=soup.select_one(".table.c-bill--actions-table > tbody")
        for item in tablebody.select("td"):
            
            if "vetoed" in item.text:
                transfer_list.append("vetoed")
                transfer_list.append(item.find_previous("td").text)
                
            else:
                transfer_list.append("not vetoed")
                transfer_list.append("no date")
我当前的
输出
如下所示:

 ['senate        Bill S3984',
  'Creates the crime of related use of a lethal or explosive device',
  'Liz Krueger',
  '(D, WF) 28th\xa0Senate District',
  'No votes for this bill.',
  'A2645',
  'not delivered',
  'no date',
  'not delivered',
  'no date',
  'not delivered',
  'no date',
  'not delivered',
  'no date',
  'not signed',
  'no date',
  'not signed',
  'no date',
  'not signed',
  'no date',
  'not signed',
  'no date',
  'not vetoed',
  'no date',
  'not vetoed',
  'no date',
  'not vetoed',
  'no date',
  'not vetoed',
  'no date'],

有什么想法吗?我只需要一次迭代(交付、签署、否决)和附带的(日期/无日期)。

这是因为它正在检查每个
项目。有几种方法可以做到这一点

只需将所有项目放入一个列表,然后查看该项目是否存在。另一种方法是进行额外的逻辑检查:

   tablebody=soup.select_one(".table.c-bill--actions-table > tbody")
   
   check_list = [item.text.strip() for item in tablebody.select("td")]

    if "delivered to governor" in check_list:
        transfer_list.append("delivered to governor")
        i = check_list.index("delivered to governor")
        transfer_list.append(check_list[i+1])
        
    else:
        transfer_list.append("not delivered")
        transfer_list.append("no date")
        
    if "signed" in check_list:
        transfer_list.append("signed")
        i = check_list.index("signed")
        transfer_list.append(check_list[i+1])
        
    else:
        transfer_list.append("not signed")
        transfer_list.append("no date")
        
    if "vetoed" in check_list:
        transfer_list.append("vetoed")
        i = check_list.index("vetoed")
        transfer_list.append(check_list[i+1])
        
    else:
        transfer_list.append("not vetoed")
        transfer_list.append("no date")

你能提供你期望的结果吗?