0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Python] 社員一覧表からIME登録用の辞書ファイル作成

Posted at

きっかけ

職場には人事部がEXCELで作成してる下記のような社員一覧表があり、月1月初に人事部から各部署へ送付される。

私は社内のITサポート職なので、メールで人名を打つのに加えて、機材表やライセンス表などの管理のために名前を正確に入力する必要がある。
その表の氏名を使ってフィルターかけたりする作業が発生するからです。

打ち間違えや変換ミス、さらには漢字で入力するので、特殊な漢字などはなかなか変換できない。

なので、このEXCELをPythonで変換して、辞書ファイルを作成して、IMEに一括で登録しちゃおう!って算段です。

サンプルデータ

社員番号 氏名(全角) カナ氏名(半角) 雇用形態 所属部署 役職 備考
1001 山田 太郎 ヤマダ タロウ 正社員 営業部 課長
1002 佐藤 花子 サトウ ハナコ 契約社員 総務部 係長
1003 鈴木 一郎 スズキ イチロウ 正社員 開発部 主任
1004 高橋 次郎 タカハシ ジロウ 派遣社員 人事部
1005 田中 美咲 タナカ ミサキ アルバイト 広報部

※兼務している人もいるので重複データがある。(重複削除する必要あり)

完成コード

import openpyxl
import unicodedata
import jaconv
import sys

def main():
    # ドラックアンドドロップされたファイルのチェック
    if len(sys.argv) >= 2:
        excel_file = sys.argv[1]
    else:
        excel_file = '社員一覧表.xlsx'
    
    # EXCELを開いてアクティブなシートを選択
    wb = openpyxl.load_workbook(excel_file)
    ws = wb.active

    # 1行ずつB列とC列の値を取得し、それぞれ処理を行う
    with open('人員リストの辞書登録用テキストファイル.txt', 'w', encoding='utf-16') as f:
        for row in ws.iter_rows(min_row=2):  # 1行目はヘッダーなので除外
            c_hankana = row[2].value
            b_kanji = row[1].value
            if b_kanji is not None and c_hankana is not None:
                if check_unique_name(b_kanji):
                    c_zenkana2 = hankana_to_zenhira2(c_hankana)
                    f.write(f'{c_zenkana2}\t{b_kanji}\t人名\n')
                else:
                    pass

# 半角カタカナを全角ひらがなにして頭の2文字を取得
def hankana_to_zenhira2(text):
    text = unicodedata.normalize('NFKC', text)    # 全角カタカナに変換
    text = jaconv.kata2hira(text)    # ひらがなに変換
    return text[:2]    # 最初の2文字のみ抽出

# 名前の重複チェック あればFalse なければTrue
name_list = [] # 関数内で保持する為、関数外で宣言
def check_unique_name(name):
    if name in name_list:
        return False
    else:
        name_list.append(name)
        return True

if __name__ == '__main__':
    main()

概説

使ってるデータは、漢字の氏名とカタカナの氏名のみ
雇用形態や部署などは使ってないです
辞書のユーザーコメントに入れる案はあるけど未実装
人名の最初のよみ2文字で変換すると漢字の氏名が変換されます。
 例:やま → 山田 太郎

辞書登録用ファイルを生成するだけですので、生成されたファイルを手動で辞書登録する必要があります。

使用するライブラリ

  • openpyxl
  • unicodedata
  • jaconv
  • sys

openpyxl

PythonでExcelを操作する

unicodedata

半角カタカナを全角カタカナに変換する

jaconv

カタカナをひらがなに変換

sys

Exe化して、そのExeにExcelファイルをドラックアンドドロップして実行する仕組みを実装したため

所感

重複データあっても、辞書登録する際に重複データは弾かれるので不要っちゃ不要
Pythonはループが楽だなぁ~

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?