索引器错误:没有此类组python

2024-10-01 02:28:55 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我觉得自己很笨,因为我知道这是一个简单的问题,答案就在我眼皮底下。我到处寻找答案,但似乎没有一个符合我的问题。

我正在尝试使用selenium获取页面中的答案编号。 这就是我所拥有的:

if browser.find_elements_by_css_selector("tr.unreaded"):
print "There's messages unreaded!"
unread_answers = browser.find_elements_by_css_selector("tr.unreaded")
for unread_row in unread_answers:
    row_id = unread_row.get_attribute("id")
    m = re.search('answer_row_\d*', row_id)
    row_number = m.group(1)
    print row_number

这是我目前正在寻找的HTML和平文档:

<tr id="answer_row_3121238" class="bla bla bla">
...
<tr id="answer_row_3121428" class="bla bla bla">
...
<tr id="answer_row_3124238" class="bla bla bla">

我得到这个错误:IndexError: no such group

我知道这是因为我试过:

if browser.find_elements_by_css_selector("tr.unreaded"):
print "There's messages unreaded!"
unread_answers = browser.find_elements_by_css_selector("tr.unreaded")
for unread_row in unread_answers:
    row_id = unread_row.get_attribute("id")
    m = re.search('answer_row_\d*', row_id)
    if m:
        print "Fetched results!"
    row_number = m.group(1)
    print row_number

结果是: Fetched results!

Fetched results!

Fetched results!

如果我试图:

print m

我得到三个物体作为输出。


Tags: answerbrowseridbyelementsfindselectorcss
2条回答

您的正则表达式中没有使用任何捕获括号,因此没有组。

m = re.search('answer_row_(\d+)', row_id)

还要注意,对于一个或多个数字,应该使用+,而不是*。

因为你的正则表达式没有组。编号的组用(...)表示,命名的组用(?P<...>...)表示。你的两个都没有。

相关问题 更多 >