pythonでの正規表現(re)で躓いています。
FLASKでローカルWEBサーバを立てて、インタネットからWEBHOOKメッセージを受けて
別のアプリにzmqでメッセージリクエストを送るコードを書いています。
WEBHOOKされるメッセージは、JSON形式で送られており、
その中に、USD/jpyといった 通貨ペアがあり、
それを正規表現で抜き出すコードを書いています。
どうやら、文字列をバイトコードで変換している旨の
警告が出ています。
** result = re.match(rb'[A-Z]{3}[/][A-Z]{3}',res2)**
TypeError: cannot use a string pattern on a bytes-like object
このコードをどう直せば、REQメッセージで送れるものでしょうか?
正規表現のライブラリ、REの使い方で躓いており、先に進めません。
すみませんが、WEB通信と、pythonについては素人なので、
そもそも書き方に自信がありません。
return self.view_functions[rule.endpoint](**req.view_args) File "C:/Users/moto/Documents/GitHub/infooff/タイトル無し0.py", line 30, in webhook res2 = re.match(r'[A-Z]{3}[/][A-Z]{3}',res2) File "C:\Users\moto\Anaconda3\lib\re.py", line 173, in match return _compile(pattern, flags).match(string) **TypeError: cannot use a string pattern on a bytes-like object** 127.0.0.1 - - [28/Aug/2019 21:18:08] "POST /?chatwork_webhook_signature=CzpZzZWtH6XWfxRAa1BW9ejjWQxh43c3qPnXM/HS3/4%3D HTTP/1.1" 500 -
python
1 2#!/usr/bin/python 3# -*- coding: utf-8 -*- 4import json 5from zmq import Context, REQ 6from flask import Flask, request 7import re 8import pdb; 9 10 11def mains(msg): 12 context = Context() 13 print("Connecting to hello world server...") 14 socket = context.socket(REQ) 15 socket.connect("tcp://localhost:5555") 16 for i in range(1): 17 socket.send(msg) 18 message = socket.recv() 19 print("Received reply %s [ %s ]" % (i, message)) 20 21def jsonConversion(jsonStr): 22 data = json.loads(jsonStr) 23 return data 24 25app = Flask(__name__) 26 27@app.route("/", methods=['POST']) 28def webhook(): 29 msg = request.get_data() 30 res = jsonConversion(msg) 31 res2 = res['webhook_event']['body'].encode('shift-jis') 32 pdb.set_trace() 33 34 result = re.match(rb'[A-Z]{3}[/][A-Z]{3}',res2) 35 36 mains(result) 37 return msg 38 39if __name__ == "__main__": 40 app.run() 41 42
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/28 21:15 編集
2019/08/28 22:05