プログラミング

シンプルに使い方を紹介

【Python】LINEでBotを作成する

LINE MANAGER

下記のURLにアクセスし、自分のID、PASSを利用してログインする。
LINE

Python

$ pip install line-bot-sdk

app.pyを以下からダウンロード。 line-bot-sdk-python/app.py at master · line/line-bot-sdk-python · GitHub

シークレトキーと、アクセスキーを入力。

app.pyに記載のある、以下の部分をコメントアウト

#line_bot_api.reply_message(
#          event.reply_token,
#           TextSendMessage(text=event.message.text)
#       )

ngrokを利用することで非常に簡単に外部のサーバーを利用することができる。

$ brew cask install ngrok
$ python app.py
$ ngrok http 8000

ngrokコマンドの出力結果より以下の部分を抜き出し、
Forwarding https://f3552516.ngrok.io
LINE Developersのwebhook URLに以下のように設定する。

https://f3552516.ngrok.io/callback

Verifyボタンを押し、Success.になったら コメントを外し、app.pyを再度実行する。

line_bot_api.reply_message(
          event.reply_token,
           TextSendMessage(text=event.message.text)
       )

すると、そのままメッセージを返還するBOTが完成する。 実際に、LINEでメッセージを入力するとそのままメッセージを返信するBOTが完成する。

参考

qiita.com

【R】エラーをtry catchで回避する

silentをTRUEにすればエラーメッセージは表示されない。

e<-try( func(),silent=FALSE)
if( class(e) == "try-error") {
  #エラー時の処理
}else{
  #成功時の処理
}

例えば、文字列検索関数str_extractを実行したときに

'pattern'引数が不正です。

というようなエラーが出た時、どのpatternがエラーを起こしたのかエラーは吐き出してくれない。 そこで、try関数を利用することで、エラーの発生箇所を知ることができる。

tryCatch({
      # エラーや警告が発生したときに例外処理を行いたいコード
    }, 
    error = function(e) {
      #エラーが発生した時の処理
    },
    warning = function(e) {
      #警告が発生した時の処理
    },
    finnaly = {
      #ここに記載したコードは必ず実行される
    },
    silent = TRUE
  )

【Shell】ファイルの存在を確認する

シェルスクリプトでファイル存在確認

test.csvが存在するときに、test.csvを削除する

if [ -e test.csv ]; then
    rm test.csv
fi

「-e test.txt」・・・test.txtが存在しているか。

「-f test.txt」・・・test.txtが存在し、通常のファイルであるか。

「-r test.txt」・・・test.txtが存在し、読み取り可能であるか。

「-s test.txt」・・・test.txtのファイルサイズが0でなければ真。

【Shell】sedで文字クラスを含む列を削除する

単純に文字クラス[]の中に「\記号」という形式で記述すれば完了。 中には不要なものも存在するが、つけておいても問題ない。

cat test.csv | sed -e "/[\.\*]/d"
cat test.csv | sed -e "/[\.\*\?\$\%\&\!\"\'\@\/\_\~\(\)\'\$\#\{\}\.\^\|\[\+\-]/d" 

【R】CSV読み込み

通常のファイル読み込み

read.csv("test.csv",header=T,stringsAsFactors=F)
  • ヘッダーあり
  • 文字列をFactor型として読み込まない

Shift-JISのcsvファイルを読み込むとき

read.csv(file("test.csv",encoding="Shift_JIS"),header=T,stringsAsFactors=F)

余計な行が含まれているとき

read.csv("test.csv",skip=1,header=T,stringsAsFactors=F)