2017-06-11 10 views
2

私はプログラマーではありません。これが私の最初のプログラムです。私は仕事に#1だ文字列 簡単なプログラムを書くのに助けが必要

の変数を検索する変数

    • コピーWebページが、私は、文字列を検索する場合:

      は私がしようとしています"June 5、2017"、以下のエラーが表示されます。何かアドバイスをいただければ幸いです

      # webpagecopy2.py 
      import urllib.request 
      webpagestring = " " 
      url = 'https://www.nwbio.com/press-releases/' 
      response = urllib.request.urlopen(url) 
      webPageCopy = response.read() 
      print(webPageCopy) 
      if "June 5, 2017" in webPageCopy: 
          print ('success') 
      

      エラーメッセージ

      Traceback (most recent call last): 
          File "C:\Users\Family\Documents\Python Programs\webpagecopy2.py", line 8, in <module> 
          if "June 5, 2017" in webPageCopy: 
      TypeError: a bytes-like object is required, not 'str' 
      

      は、ここでは、コードです。

  • 答えて

    1

    これを行うだけです。あなたの例では

    if b"June 5, 2017" in webPageCopy: 
        print ('success') 
    

    、あなたがresponse.read()から得たすべてのデータは、バイトのオブジェクトではなく文字列です。次のように、Pythonでオブジェクトのタイプを確認することができます。

    print(type(webPageCopy)) # prints - <class 'bytes'> 
    

    したがって、ターゲット文字列の前にプレフィックス(b)を追加すると、問題が解決します。

    他の代替:

    if bytes("June 5, 2017", 'utf8') in webPageCopy: 
        print ('success') 
    

    又は、

    if "June 5, 2017".encode('utf8') in webPageCopy: 
        print ('success') 
    
    1

    "June 5, 2017"がSTRオブジェクトであるので、そしてwebPageCopyバイトのようなオブジェクトです。

    webPageCopyをstrタイプに変換する必要があります。

    if "June 5, 2017" in str(webPageCopy): 
    

    また、Wasi Ahmadとして言及されているように、「2017年6月5日」をバイトのようなオブジェクトにしてください。

    if b"June 5, 2017" in webPageCopy: 
    
    +0

    感謝を。出来た。 –

    0

    webPageCopyそれでin演算子を使用するためには、あなたが別のbytes(またはバイトのような)物を供給する必要があると思いますので、bytesオブジェクトではなく文字列です。幸いなことに、これはPythonで非常に簡単です - あなたがリテラルを表すときだけb接頭辞を使用します。詳細について

    if b"June 5, 2017" in webPageCopy: 
        print ('success') 
    
    関連する問題