繁体   English   中英

将列表字典写入 CSV 文件

[英]Write to dictionary of lists to a CSV file

我希望在垂直显示时关联多个值。 当我将字典的 value 键写入 writerows (w.writerows(d.values()) 时,它是水平的,而我想要它是垂直的。

from bs4 import BeautifulSoup
import csv
r = requests.get('https://www.ufc.com/rankings')
s = BeautifulSoup(r.text, 'lxml')
fighters = s.find_all('div','view-grouping')
name = []
weightdivisions = []
for x in fighters:
    z = [names.string for names in x.find_all('a')]
    name.append(z)
    divisions = x.find('h4')
    dd = divisions.text
    weightdivisions.append(dd)

d = dict(zip(weightdivisions,name))
print(d)
with open('ufc.csv', 'w', newline='', encoding='utf-8') as f:
    w = csv.writer(f)
    w.writerow(d.keys())
    w.writerows(d.values())

尝试:

import csv
from bs4 import BeautifulSoup


r = requests.get("https://www.ufc.com/rankings")
s = BeautifulSoup(r.text, "lxml")
fighters = s.find_all("div", "view-grouping")
name = []
weightdivisions = []
for x in fighters:
    z = [names.string for names in x.find_all("a")]
    name.append(z)
    divisions = x.find("h4")
    dd = divisions.text
    weightdivisions.append(dd)

d = dict(zip(weightdivisions, name))
with open("ufc.csv", "w", newline="", encoding="utf-8") as f:
    w = csv.writer(f)
    w.writerow(d.keys())

    for column in d:
        d[column] = iter(d[column])

    while True:
        row = [next(d[column], "") for column in d]
        if all(val == "" for val in row):
            break
        w.writerow(row)

这会正确保存ufc.csv (来自 LibreOffice 的屏幕截图):

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM