Mouseover dictionaryの辞書登録をPythonを用いて直接行ってみました。流れとしてはCSVファイル(PDIC)を読み込んでSQLiteのDBを作成し、Firefoxのフォルダに放り込んだだけです。rubyでやっておられる方がいたので真似してpythonの勉強がてらやってみました。
- PDICでCSV形式の辞書ファイルを作成
- エンコードをUTF-8に変換
- 下記のプログラムでSQLiteのDBを作成
- /.mozilla/firefox/default.*/に出来たmoseoverdictionary.sqliteを入れる。
こんな流れで適用しました。PDICを使ってしまっているので邪魔くさいだけのような気がしますが、趣味なので仕方ありません。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sqlite3
import csv
def mkMouseOverDicSqlite(filename):
db = sqlite3.connect("mouseoverdictionary.sqlite")
# UTF-8で記述したいのでSQLiteの文字コードを指定
db.text_factory = str
# テーブルを作成する
try:
db.execute('create table dict(key TEXT PRIMARY KEY, desc TEXT)')
except:pass
sql = "insert into dict values (?, ?)"
# csvファイルをパースする。
reader = csv.reader(file(filename, "rb"))
reader.next() # 先頭はラベルなので飛ばす
for row in reader:
# Windowsの改行コード\r\nを\に変換する
try:
row = map(lambda x: x.replace("\r\n", "\\ "), row)
except IndexError:pass
except:raise
# sqliteDBにデータを入力
try: # 新規のデータを入力
if len(row[2]) != 0:
db.execute(sql, (row[0], row[2]+"\\ "+row[1]))
else:
db.execute(sql, (row[0], row[1]))
except sqlite3.IntegrityError: # kyeが存在するので上書きする
if len(row[2]) !=0:
db.execute("update dict set desc=? where key =?", (row[2]+"\\ "+row[1], row[0]))
else:
db.execute("update dict set desc=? where key =?", (row[1], row[0]))
except IndexError:pass # 空のListが読み出された時の処理
except:raise
db.commit() # データベースに保存する。
db.close()
if __name__ == '__main__':
myFiles = ["ryaku-116.csv", "reiji-116.csv", "waei-116.csv", "eiji-116.csv"]
for filename in myFiles:
print filename+"をデータベースに登録します。"
mkMouseOverDicSqlite(filename)
0 件のコメント:
コメントを投稿