簡體   English   中英

python正則表達式錯誤

[英]python regular expression error

我正在嘗試進行模式搜索,如果匹配,則在計數器值上設置一個位數組。

runOutput = device[router].execute (cmd)
            runOutput = output.split('\n')
            print(runOutput)
            for this_line,counter in enumerate(runOutput):
                print(counter)
                if  re.search(r'dev_router', this_line) :
                    #want to use the counter to set something

出現以下錯誤:

如果re.search(r'dev_router',this_line):

2016-07-15T16:27:13:%ERROR:文件“ /auto/pysw/cel55/python/3.4.1/lib/python3.4/re.py”,行166,

在搜索中2016-07-15T16:27:13:%-錯誤:返回_compile(模式,標志).search(字符串)

2016-07-15T16:27:13:%-錯誤:TypeError:預期的字符串或緩沖區

您混合了enumerate()的參數-首先輸入索引,然后輸入項目本身。 更換:

for this_line,counter in enumerate(runOutput):

與:

for counter, this_line in enumerate(runOutput):

在這種情況下,您會遇到TypeError ,因為this_line是整數,並且re.search()期望將字符串作為第二個參數。 展示:

>>> import re
>>>
>>> this_line = 0
>>> re.search(r'dev_router', this_line)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/user/.virtualenvs/so/lib/python2.7/re.py", line 146, in search
    return _compile(pattern, flags).search(string)
TypeError: expected string or buffer

順便說一下,像PyCharm這樣的現代IDE可以靜態地檢測到此類問題:

在此處輸入圖片說明

(此屏幕截圖使用了Python 3.5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM