Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

はてなブログ用の表組みの自動生成

少量のデータなら手打ちでいいですが、大量の表形式のデータをブログに書く手間を省きたいものです。

ということで、サンプルです。
 
○例1
百人一首のを収めたテキストファイルから、はてなブログ用の表組みを出力します。
ここのページにデータがあります。

# coding: utf-8

with open("hyaku.txt", "r") as f:  # txt形式の読み込み
    data = f.read()                # ひとまとまりのデータ
   
data = data.split("\n")
print(len(data))                   # 100

for i, string in enumerate(data):
    t = "|*{}|{}|".format(i + 1, string)
    print(t)
#|*1|あきのたの かりほのいほの とまをあらみ わがころもでは つゆにぬれつつ|
#|*2|はるすぎて なつきにけらし しろたへの ころもほすてふ あまのかぐやま|
#|*3|あしびきの やまどりのをの しだりをの ながながしよを ひとりかもねむ|
# ...    

 
この出力をコピーしてはてな記法のページにコピペですね。
ウェブの表組みを読み込んでリストを作る場合は

import pandas as pd

url = 'http://python-remrin.hatenadiary.jp/entry/2017/04/23/000000'
## DataFrameのリストを得る。header=0のオプション指定で、最初の行をheader扱い。
fetched = pd.io.html.read_html(url)
print(len(fetched))  # listの要素であるDataFrameの個数
df = fetched[0]

# 2次元リスト化
data = []
for i in range(len(df)):
    x = []
    for j in range(len(df.iloc[0])):
        x.append(df.iloc[i, j])
    data.append(x)
print(data)

# hatena表組み化
for i in range(len(df)):
    s = "|"
    for j in range(len(df.iloc[0])):
        s += str(df.iloc[i, j]) + "|"
    print(s)

  
○例2
アンスコムの例

url = 'http://python-remrin.hatenadiary.jp/entry/2017/04/23/000000_1'
fetched = pd.io.html.read_html(url) # DataFrameのリスト
print(len(fetched))  # 1   listの要素であるDataFrameの個数

print(fetched[0])
df = fetched[0]

# hatena表組み化
for i in range(len(df)):
    s = "|"
    for j in range(len(df.iloc[0])):
        s += str(df.iloc[i, j]) + "|"
    print(s)

 
作りたい表の形式が変わるときは、プログラムをいじって対応です。