2019年4月21日日曜日

英文をコピペでgoogle翻訳に突っ込む時、改行コードとかが邪魔なので一括で消したい

 この記事のソースコードはこちら。

 改行コードはtext.replace('\n', '')で消せた。
 改行コードの他に消したいものを考えたら、文章中でreferenceがその都度括弧で記載されていて読みにくい時があるのでそれも消したい。どうやらreモジュールで正規表現を使えるようなので使います。

def fixer(text):
    #改行コード削除
    text=re.sub('^\n', '', text)
    text=re.sub('\n$', '', text)
    text=text.replace(' \n', ' ')
    text=text.replace('\n', ' ')
 
    #括弧削除
    text=re.sub(' \(.*?\)', ' ', text)
    text=re.sub('\(.*?\)', '', text)
 
    #カンマ・ピリオド前の空白削除
    text=text.replace(' ,', ',')
    text=text.replace(' .', '.')
 
    return text


 正規表現で最短一致列が欲しい時には?マークを使うのは知らなかった。
 なにはともあれ正規表現で削除したいものを削除できるようになった。これで他にもいろいろ消したいものが出てきたときは消せそうです。

 上の関数を使って、コピペしたい文章をその都度jupyterに貼り付けてRun、でもいいのだが、もうちょっと使い勝手良くしたいなと思ったので、tkinterでGUIにした。

 paster.pyを実行すると、ただの2枠と中央のボタン1個のウインドウが出てくる。左に元の文章コピペして矢印ボタン押すと、右枠に処理済のテキスト出てくるようになっている。


 なおpyperclipをインストールしてあれば、paster_clip.pyが使える。こっちだと矢印ボタンを押した時点でクリップボードに処理済みテキストがコピーされる。

 今後の課題は以下。
・括弧は一括で削除しているが、本当はreferenceっぽいものだけを選択的に削除したい。正規表現の中に年号を含むようにすればいけそうではある。
・ボタン押さなくても変換してほしい。
・googletransというモジュールがある。これ使えば自動で翻訳してくれるような気もするが、インターネットで翻訳した方が精度が良さそうな気もする。そのあたりの検証も含めてgoogletransは近日中に触りたい。

0 件のコメント:

コメントを投稿