0

以下:

  • 搜索蓝色类跨度的内容
  • 从 span 中获取文本(使用 beautiful soup 的 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 回答