我正在尝试将这种格式的表格转换为字典,并且比我应该遇到更多麻烦。
该表格式如下:
A | B | C | D | E | F | G |
A value | B value | C value | D value | E value | F Value | G value |
我试图把它变成一本字典
foo["A":"A Value", "B":"B value" ...]
任何帮助,将不胜感激
答案
您可以这样做,在表行上明确选择所需的类,以及键所需的类和无需值的类(无)。
from bs4 import BeautifulSoup
html ="""
A | B | C | D | E | F | G |
A value | B value | C value | D value | E value | F Value | G value |
"""
soup = BeautifulSoup(html, 'html.parser')
keys =[i.text for i in soup.find('tr', {'class': 'tableheading'}).find_all('td')]
vals = [i.text for i in soup.find('tr', {'class': None}).find_all('td')]
my_dict = dict(zip(keys, vals))
print (my_dict)
输出:
{'F': 'F Value', 'C': 'C value', 'D': 'D value', 'E': 'E value', 'G': 'G value', 'A': 'A value', 'B': 'B value'}
另一答案
>>> from bs4 import BeautifulSoup
...
... soup = BeautifulSoup("""
...
...
...
ABCDEFG...
...
...
A valueB valueC valueD valueE valueF ValueG value...
...
...
... """, 'lxml')
...
... result = {}
... table = soup.find('table', class_='grid')
... for header, value in zip(*(tr.find_all('td') for tr in table.find_all('tr'))):
... result[header.text] = value.text
...
>>> result
{'A': 'A value', 'B': 'B value', 'C': 'C value', 'D': 'D value', 'E': 'E value', 'F': 'F Value', 'G': 'G value'}