Indexerror:没有这样的组python

时间:2016-02-27 18:46:38

标签: python regex

首先:我感到非常愚蠢,因为我知道这是一个简单的问题,答案就在我的鼻子底下。我到处都看到了答案,但似乎没有一个适合我的问题。

我正在尝试使用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

我得到了三个对象。

2 个答案:

答案 0 :(得分:7)

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup   container,         Bundle savedInstanceState) {

    /*Removed irrelevant code here*/

     Task task = new Task();
     new Task().execute();


     List<Task> tasks = task.getTasks();

     mAdapter = new TaskAdapter(tasks);
     mTaskRV.setAdapter(mAdapter);
     return view;
}

另请注意,您应使用m = re.search('answer_row_(\d+)', row_id) 一个或多个数字,而不是*。

答案 1 :(得分:2)

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