IT大佬救命,为什么我的列表内有括号,还有为什么会一个列表内嵌套了列表?

 

import urllib.request
from bs4 import BeautifulSoup
import re
from openpyxl import Workbook
import xlwt

def main():
    getdata()
    savadata="大学学校网.xlsx"
    datalist=getdata()


findwz=re.compile(r'<td class="first">(.*)</td>')
findlink=re.compile(r'<td>(.*)<a href="(.*?)"')


def webdata():
    url="http://www.hao123.com/edu"
    header={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                          "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.57"}
    req=urllib.request.Request(url=url,headers=header)
    html=""
    try:
        respond=urllib.request.urlopen(req)
        html=respond.read().decode("utf-8")
    except urllib.error.URLError as e :
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e.reason)
    #print(html)
    return html

def getdata():
    dict={}
    datalist=[]
    html=webdata()
    soup=BeautifulSoup(html,"html.parser")
    for item in soup.find_all('tr'):
        data=[]
        item=str(item)
        wz=re.findall(findwz,item)
        data.append(wz)
        link=re.findall(findlink,item)
        data.append(link)
        print(data)




if __name__=="__main__":
    main()



 

findwz=re.compile(r'<td class="first">(.*)</td>')

我只需要匹配符合的字符串中的一个值,但是可能会匹配到多个字符串。那就意味着每个字符串中都有一个值

wz=re.findall(findwz,item)

data.append(wz)

data是列表,wz又是列表,把wz追加进data,那就是列表套着列表了

 

findlink=re.compile(r'<td>(.*)<a href="(.*?)"')

我只需要匹配符合的字符串中的两个值,但是可能会匹配到多个字符串。那就意味着每个字符串可能都有两个值

link=re.findall(findlink,item)

data.append(link)

因为有两个值,且每两个值都属于匹配到的一个字符串内,那两个值为一组属于一个字符串。

那就是[("1","2"),("1","2"),("1","2"),("1","2")]这种形式

每("1","2")为一组,代表一个字符串内的。如果不这样表示,这样表示的话[1,2,1,2,1,2,1,2]就没啥意义了

 

 

请描述清楚:

  • "我的列表内有括号"
    • 这里的 "我的列表" 是指代码里的哪个列表?
  • "一个列表内嵌套了列表"
    • 一个列表是什么?
    • 嵌套里的列表又是哪个?