2017-04-13 2 views
0

Pythonで正規表現を使用してスケジュールから異なる時間を抽出する関数をプログラミングしています。ここで私はBeautifulSoupを使用してウェブサイトから得たスケジュールの例である:discussion17と正規表現を使用してスケジュールから時間を抽出する際の問題

インタラクティブ話:00-18:00ドキュメンタリーは、私たちはあなたにすべての方法タクシムゲズィパークボイコットを提示 「ゲズィ占拠」し;良い側面と悪いsides18.00と昼と夜 、 - 19時00詩人・マリア・バン Daalen 'ハイチVodoo' Queridoのpublishers19から詩人:00 Food20:30-22:30

上に示したように入力テキストには開始時刻と終了時刻はありません。時間を分と区別するときに「:」または「。」のどちらかを使用することとの矛盾もあります。私は、次のコードを使用してPythonの上のテキストを検索するには\d\d[:|.]\d\d(\s*.\s*\d\d[:|.]\d\d)?

:regex101を使用して

は、私はすべての異なる時間に動作するようです、次の(非常に醜い)正規表現を行っている

def extract_times(string): 
    list_of_times = re.findall('\d\d[:|.]\d\d(\s*.\s*\d\d[:|.]\d\d)?', string) 
    return list_of_times 
私はこの機能では、上記の例のテキストを置くとき

は、しかし、それはこれを返します。

['-18:00', ' - 19:00', '', '-22:30'] 

私はのようなものを期待しました。

どうしたのですか? 18:00から18.00

に合わせて、1:00 01:00

[:.]に一致するように\d{1,2}[:.]([\d\s-]+[:.])?\d{2}}

説明

\d{1,2} 1または2桁:

+1

私はピトンを知らないが、グループをキャプチャすることでその問題を考える。この '(\ d \ d [:|。] \ d \ d(?:\ s * - \ s * \ d \ d [:| \ d \ d)]) ' – splash58

+0

IT WORKED !!どうもありがとうございました!!! – nieknel

答えて

0

使用この1 [\d\s-]+n数字、空白またはダッシュ(optionaリットル)

[:.]\d{2}あなたのサンプルテキストで18:00から18.00 (オプション)

\d{2} 2桁

を照合するには、次のは(完全一致を使用)と一致します:

をマッチ1 17:00-18:00 マッチ2 18.00 - 19:00 マッチ3 19:00 マッチ4 20:30-22:30

Demo

+0

あなたの答えをありがとう! – nieknel

関連する問題