我可能錯過了這裏非常基本的東西,但這裏有:re.findall在控制檯中工作,但不是在腳本中?
我使用Python 2.7和正則表達式來識別字符串中的數字。
在控制檯中,我輸入:
>>> newstr = 'NukeNews/File_132.txt'
>>> int(re.findall(r'\d+',newstr)[0])
132
這是我的期望。
但是,在我運行的腳本中,我將字符串存儲在字典linedict中。我運行此腳本:
news_id=[]
for line in line_vec:
print linedict[line]
newstr= linedict[line]
id_int = re.findall('r\d+',newstr)
print id_int
news_id.append(id_int)
這是一個長長的名單,但輸出的樣子:
NukeNews/File_132.txt
[]
所以 - 正確的字符串被註冊,但它不能在任何匹配。
我之前調用了列表中的第一項(匹配int(re.findall(r'\d+',newstr)[0])
的控制檯輸入,但腳本告訴我正則表達式沒有在字符串中找到任何數字的實例,我期望這個返回:?
NukeNews/File_132.txt [「132」]
任何想法,爲什麼它如預期不工作,當我嘗試運行re.match(r'/d+',newstr)
我也得到一個空的組(以下上https://docs.python.org/2/library/re.html組爲例)
編輯:正如指出的,t他是一個不小心'r'
和r'*'
的情況。我只是爲了防止其他人在Google上搜索「爲什麼我的正則表達式在控制檯中工作,而不是在腳本中工作」,忘記檢查這個錯字,就像我一樣。
哦,這就是令人生厭的。謝謝。這正是問題所在。 :) – zainksasdf