python
  • regex
  • beautifulsoup
  • 2016-05-04 24 views -1 likes 
    -1

    BeautifulSoupとRegexを使用してthis websiteをスクレイプしようとしています。そうしている間、私は "二重引用符"を持っていた質問に遭遇し、 "二重引用符"を置き換えて.txtファイルとして保存したいと考えました。しかし、それは "二重引用符"を置き換えるものではありません。 .replace()メソッドを試しましたが失敗しました。コードは次のとおりです。Python Beautiful Soup and Regex - 二重引用符が置き換えられない

    url = 'http://www.sanfoundry.com/operating-system-mcqs-process-scheduling-queue/' 
    r = requests.get(url) 
    soup = bs(r.content) 
    data = soup.find_all('div', {'class':'entry-content'}) 
    data1 = data[0].text 
    pattern = r'^\d{1,2}[\.|\)]([\s|\S].*)|(^[a-z]\)\s.*)|^View Answer\s?(Answer:.*)' 
    #pattern = r'^\d{1,2}[\.|\)]\s*(.*)|(^[a-z]\)\s.*)|^View Answer\s?(Answer:.*)' 
    reg = re.compile(pattern) 
    #with open(r'C:\Users\dhvani\Google Drive\Python\Data Scraping\byb.txt', 'a') as f: 
    with open(r'C:\Users\Jeri_Dabba\Google Drive\Python\Data Scraping\byb.txt', 'a') as f: 
    
        for i in data1.split('\n'): 
         if reg.search(i).group(1): 
          y = reg.search(i).group(1) 
          y = y.replace('"', '') 
          f.write(y + "\n") 
    

    私が.txtファイルをチェックしたとき、「二重引用符」は置き換えられませんでした。何が問題なのでしょうか?

    私はPythonの初心者です。

    +0

    既にあなたは正規表現を実行するプレーンテキストを持って、ここにそれを投稿してください。 –

    答えて

    1

    このウェブサイトは、 '通常の' 二重引用符文字でない文字が含まれていない"、すなわちU + 0022

    サイトでは、左右の二重引用符は、Unicode U + 201CおよびU + 201D

    をマーク含みあなたはこれらを置き換えることができ

    :私はあなたがこすりしようとしているウェブサイトを見ていた

    y = y.replace('"', '') 
    y = y.replace('“', '') 
    y = y.replace('”', '') 
    
    +0

    ありがとうございました。出来た。 – Jeril

    1

    。 置き換えようとしている二重引用符の例 "ブロック"はありますか?もしそうなら、自分の見積もりと私がウェブサイトから貼り付けたものとの違いを見てください。彼らは同じ性格ではありません。

    あなたが置き換えようとしている句読点のコードをコピー/貼り付けするか、見つけてください。一つの記号については、ウェブ上でさまざまな文字が使われているので、 "and"と " 。

    したがって、あなたのようなものが必要です:これはおそらく、句読点を使用して唯一の問題ではありませんので

    y = y.replace('“', ''); 
    y = y.replace('”', ''); 
    

    を、私はあなたが交換し、その上でループしたいすべてのものを配列で行う提案します配列。

    関連する問題