2017-02-15 10 views
0
# Ex1 
    # Number of datasets currently listed on data.gov 
    # http://catalog.data.gov/dataset 


    import requests 
    import re 

    from bs4 import BeautifulSoup 


    page = requests.get(
     "http://catalog.data.gov/dataset") 

    soup = BeautifulSoup(page.content, 'html.parser') 

    value = soup.find_all(class_='new-results') 

    results = re.search([0-9][0-9][0-9],[0-9][0-9][0-9], value 


    print(value) 

コードが上にあります。私はregex = [0-9] [0-9] [0-9]、[ 0-9] [0-9] [0-9]Python変数内での正規表現のパターン化されたテキストの検索

変数 '価値' 内のテキスト内の

私はこれをどのように行うことができますか?

ShellayLeeの提案に基づいて、私はまだERROR

トレースバック(最新の呼び出しの最後)GETTING

import requests 
import re 

from bs4 import BeautifulSoup 


page = requests.get(
    "http://catalog.data.gov/dataset") 

soup = BeautifulSoup(page.content, 'html.parser') 

value = soup.find_all(class_='new-results') 

my_match = re.search(r'\d\d\d,\d\d\d', value) 


print(my_match) 

にそれを変更: my_matchで ファイル "ex1.py"、19行目に、=再.search(r '\ d \ d \ d、\ d \ d \ d'、値) ファイル "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/re.py"、行182、検索中 戻り値_compile(パターン、フラグ).search(文字列) TypeError:予想される文字列またはバイト状のオブジェクト

答えて

0

Pythonでは正規表現の基本が必要です。 Pythonの正規表現は文字列として表され、reモジュールはmatch,search,findallのような関数を提供し、文字列を引数として取り、それをパターンとして扱うことができます。

\dは( [0-9]と同じ)数字記号を意味
my_match = re.search(my_pattern, value_text) 

ように使用次いで

my_pattern = r'\d\d\d,\d\d\d' 

:あなたのケースで

、パターン[0-9][0-9][0-9],[0-9][0-9][0-9]は、として表すことができます。文字列の先頭にあるrは、文字列のバックスラッシュがエスケープとして扱われないことを意味します。

検索関数は、match objectを返します。


私は、いくつかのチュートリアルを最初に歩み、さらに混乱を避けることをお勧めします。公式HOWTOは、すでによく書かれている:

https://docs.python.org/3.6/howto/regex.html

+0

ありがとうShellayLee! –

+0

@BinuAlexander答えが役に立ったら、私にupvoteを教えてください:) – ShellayLee

関連する問題