如何使用csv_writer将列表写入单独的行?

2024-04-20 02:27:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用BeautifulSoup提取html表并将元素存储在列表中。接下来,我想将列表写入.csv文件,但它看起来writerow函数不会将元素写入不同的行。

import csv
from bs4 import BeautifulSoup

# Grab first table (station table in html file)
def parse_station(html):
    soup = BeautifulSoup(html)
    s_table = soup.find_all('table')[1]
    stations = []
    for tr in s_table.find_all('tr')[1:]:
        td = tr.find_all('td')[1]
        td = td.get_text()
        stations.append(td)

    return stations


stations = parse_station(open('data.html').read())

with open('stations.csv', "wb") as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow([stations])
f.close()

.csv类似于:

^{pr2}$

而不是:

^{pr3}$

我的代码怎么了?我怎么能修好?(我使用的是Python 2.7)


Tags: csvimport元素列表htmltableallfind
2条回答

您可以使用^{}从html获取表,并使用^{}和{}将其保存到csv文件中:

import pandas as pd
df_list = pd.read_html(your_html)
df = df_list[0]
df.to_csv('Your file', sep='\n')

您可以使用这个示例代码

import csv
with open('test.csv', "wb") as f:
    writer = csv.writer(f)
    writer.writerow(['A'])
    writer.writerow(['B'])

这会给你这样的结果

^{pr2}$

你可以传递你的价值

注意:检查站点类型,如果这将返回str而不是您的值将在单行中,但如果这是列表,则循环列表示例代码,以将列表写入CSV。在

>>> list = [1,2,3,4,5]
>>> with open('test.csv', 'wb') as f:
...     writer = csv.writer(f)
...     for i in list:
...         writer.writerow([i])
... 

相关问题 更多 >