Python TypeError:“ _ sre.SRE_Match”对象没有属性“ __getitem__”

时间:2018-10-17 06:07:18

标签: python

我是python和编码的新手,我试图使之无法正常工作。 这是测试代码,如果可以运行,我应该可以在其上进行构建。

就像我说的那样,我很陌生,如果这是一个愚蠢的错误,对不起。

# coding=utf-8
import ops         # Import the OPS module.
import sys         # Import the sys module.
import re

# Subscription processing function
def ops_condition (o): 
    enter code herestatus, err_str = o.timer.relative("tag",10)
    return status

def ops_execute (o):
    handle, err_desp = o.cli.open()
    print("OPS opens the process of command:",err_desp)
    result, n11, n21 = o.cli.execute(handle,"return")
    result, n11, n21 = o.cli.execute(handle,"display interface brief | include Ethernet0/0/1")  
    match = re.search(r"Ethernet0/0/1\s*(\S+)\s*", result)

    if not match:
        print("Could not determine the state.")
        return 0  

    physical_state = match[1]  # Gets the first group from the match.
    print (physical_state)
    if physical_state == "down":
            print("down")
            result = o.cli.close(handle)
    else :
        print("up")
        return 0

错误

<setup>('OPS opens the process of command:', 'success')

Oct 17 2018 11:53:39+00:00 setup %%01OPSA/3/OPS_RESULT_EXCEPTION(l)[4]:Script is                            test.py, current event is tag, instance is 1515334652, exception reason is Trac                           eback (most recent call last):
  File ".lib/frame.py", line 114, in <module>
    ret = m.ops_execute(o)
  File "flash:$_user/test.py", line 22, in ops_execute
    physical_state = match[1]  # Gets the first group from the match.
TypeError: '_sre.SRE_Match' object has no attribute '__getitem__'

1 个答案:

答案 0 :(得分:0)

正则表达式匹配对象的__getitem__方法仅从Python 3.6开始添加。如果您使用的是早期版本,则可以改用group方法。

更改:

physical_state = match[1]

收件人:

physical_state = match.group(1)

有关详细信息,请参阅documentation