2017-02-07 8 views
0

でウェブサイトから日付を抽出します。私はPythonの正規表現に文字列をコピー - ペーストした場合だから私は、日付と一致しない正規表現は、私のようなウェブサイトからのコンテンツを掻き取るbeautifulsoup使用していBeautifulSoup

date = data.findAll(text=re.compile("Berlin, \d{2}. \w+\b \d{4}")) 

date = dat.match(text) 

の両方を試してみました。しかし、ここでは両方のオプションが機能していないようです。誰かが私の問題点を教えてもらえますか?ありがとう!

答えて

2

あなたのウェブスクレイピングが正しくデータを収集していると仮定すると、あなたがつかむ文字列が...

>>> import re 
>>> string = "Berlin, 30. November 2016." 
>>> res = re.search("(\d+).+?(\w+).+?(\d+)", string) 
>>> res.group(1) 
'30' 
>>> res.group(2) 
'November' 
>>> res.group(3) 
'2016' 
"Berlin, 30. November 2016."のように見えるので、
    あなただけのとても ()にしたい言葉/数字を囲む必要があり
  • 後でマッチグループをつかむことができます。またはfindallを使用することができますが、1つのマッチが必要なので、過剰です。
  • 個々のグループを必要としない場合は、一致パターン全体を取得するには、同じパターンをres.group()で単に使用してください。
1

dat = re.compile("Berlin, \d{2}\. \w+ \d{4}") 
に変更

dat = re.compile("Berlin, \d{2}. \w+\b \d{4}") 

正規表現でキーワード.をエスケープし、それを使用する必要があり、\bを削除しない

変更

date = dat.match(text) 

\nBerlin, 30. November 2016. Zum s....

date = dat.search(text) 

text開始し、先頭に新しい行があり、matchは、\nで開始search

に変更します
関連する問題