パハットノート

※当サイトではGoogleアドセンス広告を利用しています

BeautifulSoup CSVをhtmlのテーブルに変換





使用するCSVファイル

以下のプログラムでは次のCSVファイルを使用します。

名前,英語,数学
タカシ,53,27
エミ,24,58
ボブ,98,48





プログラム

import pandas as pd
import bs4

#0行目をcolumns、0列目をindexに指定する
df = pd.read_csv('test_data.csv', header=None)

#soupオブジェクトを作成
soup = bs4.BeautifulSoup('', 'html.parser')

#tableタグを作成
table_tag = soup.new_tag('table')

#行ごとに取り出す
for index, data in df.iterrows():
    #trタグの用意
    tr_tag = soup.new_tag('tr')

    #行ごとのデータに対するループ
    for d in data:

        #一番上の行はthタグに収める
        if index == 0:
            th_tag = soup.new_tag('th')
            th_tag.string = d
            tr_tag.append(th_tag)

        else:
            td_tag = soup.new_tag('td')
            td_tag.string = d
            tr_tag.append(td_tag)

    #trタグをtableに追加
    table_tag.append(tr_tag)


#tableをsoupに追加
soup.append(table_tag)

#書き出し
with open('output.html', mode='w', encoding='utf-8') as f:
    f.write(str(soup))




作成したファイルをテキストエディタで開くと次のようになっています。
整列はされないことに注意しましょう。

<table><tr><th>名前</th><th>英語</th><th>数学</th></tr><tr><td>タカシ</td><td>53</td><td>27</td></tr><tr><td>エミ</td><td>24</td><td>58</td></tr><tr><td>ボブ</td><td>98</td><td>48</td></tr></table>




作成したファイルをブラウザで開くと次のようになっています。

名前英語数学
タカシ5327
エミ2458
ボブ9848