厚生労働省のブラック企業リストをTSV変換

a244.hateblo.jp

tabulaでブラウザで範囲を指定してPDFからTSV変換できます。

tabula.technology

コマンド用

github.com

tabula-1.0.1-jar-with-dependencies.jarをダウンロードして

java -jar .\tabula-1.0.1-jar-with-dependencies.jar -o 170510-01.csv -p all -r .\170510-01.pdf

を実行

TSVだと改行でずれるのでいったんCSV保存してから改行削除等の加工をしてTSV保存するときれいにできます。

import csv
import re

with open('170510-01.csv', 'r') as fr:
    reader = csv.reader(fr, dialect='excel')

    header = ['企業・事業場名称', '所在地', '公表日', '違反法条', '事案概要', 'その他参考事項']

    data = []

    # 管轄 初期値
    dept_labor = ''

    # 最終更新日 初期値
    last_modified_date = ''

    # ヘッダー追加
    data.append(["管轄", "最終更新日"] + header)

    for row in reader:

        # 前後のスペース削除
        temp = [i.strip() for i in row]

        # ヘッダーはスキップ
        # 千葉労働局に「その他参考事項」がないので4まで比較
        if header[:5] == temp[:5]:
            continue

        if '最終更新日' in temp[0]:

            test = temp[0].replace('最終更新日:', ' ').split()

            dept_labor = test[-2]
            last_modified_date = test[-1]

        else:
            # 改行文字を削除
            for j in range(len(temp)):
                temp[j] = re.sub('\n', '', temp[j])

            # 違反法条ごとにコンマ追加
            temp[3] = re.sub('条(の\d{1,3})?', lambda m: m.group(0) + ', ',
                             temp[3]).rstrip(', ')

            # 送検後別項目があるとコンマ追加
            temp[5] = re.sub('H\d{1,2}\.\d{1,2}\.\d{1,2}',
                             lambda m: ', ' + m.group(0), temp[5]).lstrip(', ')

            data.append([dept_labor, last_modified_date] + temp)

with open('result.tsv', 'w') as fw:
    writer = csv.writer(fw, dialect='excel-tab', lineterminator='\n')
    writer.writerows(data)