2013-08-24 59 views
0

我要瘋了,我不知道爲什麼我收到此錯誤:蟒蛇應用re.sub缺少組名稱錯誤

Traceback (most recent call last): 
    File "File.py", line 154, in <module> 
    main() 
    File "File.py", line 143, in main 
    dld = work() 
    File "File.py", line 100, in work 
    string1= re.sub(find_dev_line, dev_line_to_replace, string1) 
    File "C:\Program Files (x86)\python27\lib\re.py", line 151, in sub 
    return _compile(pattern, flags).sub(repl, string, count) 
    File "C:\Program Files (x86)\python27\lib\re.py", line 270, in _subx 
    template = _compile_repl(template, pattern) 
    File "C:\Program Files (x86)\python27\lib\re.py", line 257, in _compile_repl 
    raise error, v # invalid expression 
sre_constants.error: missing group name 

隨着這些代碼行:

dev_line_searchterm = "^.+"+devname+".+$" 
dev_line_to_replace = str(os.path.join(start_dir, "Downloads", devname, filename)) 
find_dev_line = re.compile(dev_line_searchterm, re.MULTILINE) 
string1= re.sub(find_dev_line, dev_line_to_replace, string1) 

我不有這些行中的任何組,爲什麼我會收到錯誤?

+1

與你的問題沒有關係,但你不需要'os.path.join'命令中的'str' ......'os.path.join'返回一個'str'。 – SethMMorton

回答

2

dev_line_to_replace可能包含一些對正則表達式有意義的特殊字符。您應該使用re.escape跳過devnamedev_line_to_replace,以避免在您的搜索或替換模式中出現特殊字符。

+0

哦,我的上帝非常感謝!我永遠不會想到這個問題有一段時間了! :/ –