0

以下:

  • クラス blue のスパンのコンテンツを検索します
  • スパンからテキストを取得します (美しいスープの get_text メソッドを使用)
  • 行に値を出力します
  • 行ごとに、一部のテキストを置き換えます
  • 各行で正規表現検索を行います
  • 一致した値を空のリストに追加します

コード

from bs4 import BeautifulSoup
import re
the_list = []
spans = content.find_all('span', {'class' : 'blue'})
lines = [span.get_text() for span in spans]
for line in lines:
  line = line.replace(',','').replace(' am', 'am').replace(' pm','pm')
  m = re.search(r'(\d{2}/\d{2}/\d{2} \d+:\d+[a|p]m)', line)
  if m:
    the_list.append(m.group(1))

リストへの最初の結果の追加をスキップできるようにしたいと思います。

だから私は試しました:

for n, _ in enumerate(m):
  if n!=0:
    if m:
      the_list.append(m.group(1))

しかし、「m」の値を反復処理することはできません。エラーが発生します:

TypeError: '_sre.SRE_Match' object is not iterable

更新/解決策:

将来の参照のための解決策があれば素晴らしいことですが、私がしたことは、上記のコード ブロックの前にリストから不要な値を削除する方法を見つけることでした (新しいリストを作成し、値を でフィルタリングするだけですif x not in) 例:

new_list = []
for i in old_list:
    if 'unique text' not in i:
        new_list.append(i)
for line in new_list:
.... etc as above
4

1 に答える 1

1

試してみましたか

regex = r'(\d{2}/\d{2}/\d{2} \d+:\d+[a|p]m)'
your_regex.findall(line)

それ以外の

re.search

?

リストを返す必要があります

于 2013-05-07T17:54:24.607 に答える