我試圖評估一個正則表達式來確定文件名中的月份並返回月份名稱。我的代碼如下所示:循環重新搜索無法檢測到2月份的月份數並返回正確的月份
DEF月(名):
if re.search('(?<=MLV\s.\s)1', name) or re.search('(?<=MLV\s.\s)+monthName[i]', name):
return('January')
elif re.search('(?<=MLV\s.\s)2', name) or re.search('(?<=MLV\s.\s)+mon[i]', name):
return("February")
etc...
文件名是從文件夾中讀入。 文件名的例子:
MLV一個1.4.16.pdf
MLV一個2.7.16.pdf
MLVñ2016年1月
我的代碼能夠順利從確定一個月名顯示所有文件示例,但是我想要刪除所有'elif,並將第一個'if'通過循環並返回適當的月份名稱。 當我通過循環放置'if'時,我似乎無法得到2.7.16(意思是二月份文件名)作爲二月份返回。
這是企圖在一個循環的解決方案:
DEF月(名):
if re.search('(?<=MLV\s.\s)[1-12]', name) or re.search('(?<=MLV\s.\s)+monthName[i]', name):
return('January') # or February etc...
我也試過:
DEF月(名):
monthName = ['Jan','Feb','Mar','Apr']
monthNumber = ['1','2','3','4']
for i in range(len(monthName)):
for j in monthNumber:
if re.search('(?<=MLV\s.\s)+monthNumber[j]', name) or re.search('(?<=MLV\s.\s)+monthName[i]', name):
return('January') # or February etc...
當然我還需要弄清楚如何在month.Number的re.search中找到'2'時返回'February'。
任何幫助表示讚賞。 乾杯, 馬克
優秀!這很有效,我在程序中將同樣的方法應用於Day和Year格式。這壓縮了很多重複的代碼。非常感謝。 – Mark