簡體   English   中英

無法跨csv文件中的列寫入數據

[英]Unable to write data across columns in a csv file

我已經用python編寫了一個腳本,以從網頁的表中抓取不同的名稱及其值,並將其寫入csv文件中。 我下面的腳本可以完美地解析它們,但是我無法以自定義的方式將它們寫入csv文件。

我想做的是將namesvalues寫在您可能會在圖2中看到的各列中。

這是我的嘗試:

import csv
from bs4 import BeautifulSoup
import requests

res = requests.get("https://www.bloomberg.com/markets/stocks",headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup(res.text, "lxml")
with open("outputfile.csv","w",newline="") as infile:
    writer = csv.writer(infile)
    for table in soup.select(".data-table-body tr"):
        name = table.select_one("[data-type='full']").text
        value = table.select_one("[data-type='value']").text
        print(f'{name} {value}')
        writer.writerow([name,value])

輸出如下所示:

在此處輸入圖片說明

我希望如何獲得輸出如下所示:

在此處輸入圖片說明

任何解決此問題的幫助將不勝感激。

嘗試定義空列表,將所有值附加到循環中,然后一次寫入所有值:

with open("outputfile.csv","w",newline="") as infile:
    writer = csv.writer(infile)
    names_and_values = []
    for table in soup.select(".data-table-body tr"):
        name = table.select_one("[data-type='full']").text
        value = table.select_one("[data-type='value']").text
        print(f'{name} {value}')
        names_and_values.extend([name,value])
    writer.writerow(names_and_values)

如果我對您的理解正確,請嘗試僅一次調用writerow,而不是每個循環調用一次

import csv
from bs4 import BeautifulSoup
import requests

res = requests.get("https://www.bloomberg.com/markets/stocks",headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup(res.text, "lxml")
with open("outputfile.csv","w",newline="") as infile:
    writer = csv.writer(infile)
    data = []
    for table in soup.select(".data-table-body tr"):
        name = table.select_one("[data-type='full']").text
        value = table.select_one("[data-type='value']").text
        print(f'{name} {value}')
        data.extend([name, value])
    writer.writerow(data)

這似乎是一件丑陋的事情,確定嗎?

使用熊貓獲取csv和操作表。 您將需要執行以下操作:

import pandas as pd

df = pd.read_csv(path)
df.values.ravel()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM