【问题标题】:Scraping Clean Scientific Names with No Parenthesis Using regex使用正则表达式刮掉没有括号的干净科学名称
【发布时间】:2013-11-12 01:36:40
【问题描述】:

我正在使用正则表达式从网站上抓取科学名称,但我不知道如何不使用科学名称提取括号。

HTML 是这样写的:

<span class="SciName">(Acanthastrea bowerbanki)</span>

我的正则表达式是这样写的:

regex = '<span class="SciName">(.+?)</span>'

我的结果如下所示:

(Acanthastrea bowerbanki)

但我需要它们看起来像这样:

Acanthastrea bowerbanki

【问题讨论】:

  • 你能贴出你正在使用的代码吗?
  • Nickie 一针见血,我又回来做生意了。

标签: python html regex parentheses


【解决方案1】:

您需要一对额外的括号,您必须使用反斜杠对其进行转义以使其成为文字字符:

regex = r'<span class="SciName">\((.+?)\)</span>'

您将在以下情况下使用它:

import re

text = '<span class="SciName">(Acanthastrea bowerbanki)</span>'
regex = r'<span class="SciName">\((.+?)\)</span>'
m = re.match(regex, text)
print m.group(1)

【讨论】:

  • 做到了,虽然我省略了“r”:regex = r'((.+?))' 那是什么意思?
  • r 代表原始字符串表示法;你可以阅读更多about itwhy it's useful in regular expressions。在这种情况下,因为\(\) 中的反斜杠被保留,所以没有必要。
  • 经过一天的 Python 学习后,这对我来说非常有意义,以至于我有点尴尬地问了这个问题,但它确实很有帮助!
【解决方案2】:

您不需要为此使用正则表达式。

s = 'blah blah blah (Acanthastrea bowerbanki) blah blah blah'

scientistName = s[s.find("(")+1:s.find(")")]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2012-12-24
    • 1970-01-01
    相关资源
    最近更新 更多