【やりたいこと】
pythonを用いて、クリップボードに入った文字列のうち、{}で囲まれたものを、
置換用の辞書にあるキーと一致した場合に、値の文字列に一斉に置換するプログラムを作りたいと思っています。
(例)
辞書ファイル(rep_dict.txt)
郵便番号,〒100-8111
住所,東京都千代田区千代田1-1
宛先指名,山田 太郎
案件,H社向け××システム
クリップボードの文字:
{宛先指名}様
先月ご依頼いただきました{案件}についてですが、…(中略)
以下住所に書類を送付いただけませんでしょうか。
{郵便番号} {住所} 宛
お忙しい中大変申し訳ありませんが、ご対応のほど、よろしくお願いいたします。
【やってみたこと】
下記コードを描いてみました。
python3
1import pyperclip, re, threading, random 2 3def task(): 4 copy_text = str(pyperclip.paste()) 5 6 #todo:ここで読み込む。下はテストで置き替え。{}で囲まれた文字は****で置き換えはできた 7# new = re.sub(r'{.+}', '****', copy_text) 8 9 if len(copy_text) > 0: 10 pyperclip.copy(''.join(new)) 11# print('---Rewrite Complete!---') 12 else: 13 print('---Failure---') 14 th = threading.Timer(5, task) 15 th.start() 16 17t = threading.Thread(target=task) 18t.start() 19 20 21
上記のコードで、定期的に{}内の文字を****に置換するのには成功したのですが、
辞書を読み込んで、その情報と一致したら置換する処理を描こうとして詰まってしまいました。
下記のコードを追加したら、辞書を読み込む際に、エラーが出てしまいました。
with open("rep_dict.txt") as f:
s = f.read()
print(s)
dict_rep = dict(line.strip().split(',') for line in s)
dict_rep
ValueError: dictionary update sequence element #0 has length 1; 2 is required
もしよろしければ、よい解決策についてご教示いただければと考えます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/10 14:23
2018/06/10 14:26
2018/06/10 14:33