2012-05-12 5 views
2

私はこのコードを持っているが、私はこのエラーを取得する理由を私は理解できません。はTypeError:+のためのサポートされていないオペランドのタイプ(S): '_sre.SRE_Match' と '_sre.SRE_Match'

a= name+pw+salt 
TypeError: unsupported operand type(s) for +: '_sre.SRE_Match' and '_sre.SRE_Match' 

スクリプト

class MainHandler(Handler): 

    def make_salt(self): 
     return ''.join(random.choice(string.ascii_letters) for x in range(5)) 

    def make_pw_hash(self, name, pw): 
     salt = self.make_salt()  
     a= name+pw+salt //problem here 

     h = hashlib.sha256(a.encode("UTF8")).hexdigest() 
     return '%s|%s' % (h, salt) 


    def post(self): 
     store_hash_and_salt = self.make_pw_hash("José", "somePass") 
     print (store_hash_and_salt) 

答えて

2

問題があっないです。以前は、group()メソッドを使用して文字列を取得するのではなく、REの一致結果を先に渡しました。

(返される文字列の形式も正しくありませんが、ここではバグではありません)

+0

彼は正しいです。どこかでオブジェクトを再初期化して初期化し、make_pw_hash – User