Help us understand the problem. What is going on with this article?

Python3でメール等の返信のための引用符「>」をつける

この記事について

この記事ではメール等で返信を行う際に、相手の文面の文頭に引用符をつけるコードを紹介します。筆者は素人です。色々教えていただけると幸いです。

筆者はPython2のことをよく知りませんが、自分がPython3を使ってるっぽいことだけはわかっています(Python3.6.0かな?)。そのため、記事のタイトルではPython3としました。

やりたいこと

下記のように送られてきたメール(相手の文面)に対して、先頭に「>」をつけた返信用の文面を出力したいです。ただし、空行はそのままにしておきたいです。

送られてきたメール(相手の文面)

佐藤さん

こんにちは

来週の飲み会のお店の候補です。

店A
うまい。少し高い。

店B
味はまあまあ。安い。

店C
飲み物が沢山ある。雰囲気が良い。

鈴木

返信用の文面

>佐藤さん

>こんにちは

>来週の飲み会のお店の候補です。

>店A
>うまい。少し高い。

>店B
>味はまあまあ。安い。

>店C
>飲み物が沢山ある。雰囲気が良い。

>鈴木

実装コードと実行結果

実装したコードと使い方、実行例を以下に示します。

コード

reply_mark.py
path_r = "sent_text.txt"
path_w = "reply_text.txt"
with open(path_r) as f_r, open(path_w, mode='w') as f_w:
    for line in f_r:
        if len(line) > 1:
            f_w.write(">" + line)
        else:
            f_w.write("\n")
  • with openなんたら〜の書き方でファイルオープンすると、ブロックの終了時にファイルクローズしてくれるらしいです。
    (参考: https://note.nkmk.me/python-file-io-open-with/ )

  • if では空行かどうかの判定をしています。

  • 用途に合わせて f_w.write(">" + line) の > を他の記号等に変えるなどもできます。

使い方

  1. reply_mark.py があるディレクトリに sent_text.txtというファイルを作成し、送られてきたメール(相手の文面)をコピペする。
  2. 下記のように、ターミナルで reply_mark.py を実行する。

    $ python reply_mark.py
    
  3. reply_text.txt というファイルが作成され(※)、相手の文面の先頭に「>」をつけた返信用の文面が出力される。使うときはここからコピペする。

※reply_text.txt というファイルが既に存在している場合は上書きされます。

入力例

sent_text.txt
佐藤さん

こんにちは

来週の飲み会のお店の候補です。

店A
うまい。少し高い。

店B
味はまあまあ。安い。

店C
飲み物が沢山ある。雰囲気が良い。

鈴木

出力例

reply_text.txt
>佐藤さん

>こんにちは

>来週の飲み会のお店の候補です。

>店A
>うまい。少し高い。

>店B
>味はまあまあ。安い。

>店C
>飲み物が沢山ある。雰囲気が良い。

>鈴木

終わりに

もう少し便利にしたいですね。理想で言えば、DeepLのアプリの「command + C」を2回押したら結果出るみたいなの良いなあ。

あと、シェルスクリプトで同じことできる気がしますが、Pythonの勉強を兼ねてるのでまあいっかということで。

気づいた点などあればご指摘、ご質問いただければと思います。特にコードの書き方や仕組みの作り方の改善案などあれば勉強になるなと思います。

smalltech
ツイッターは @smalltech_bw です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away