0
我正在重命名目錄中的所有文件,並使用正則表達式模式檢查是否有任何文件具有適當的文件名結構(我在www.rubular.com上雙重檢查了該模式,這似乎是正確的)。如果是這樣,它跳過重命名他的文件。以下代碼重命名該文件,無論它是否具有適當的文件名結構....我沒有看到它爲什麼不跳過該文件。在確定爲什麼是不工作的正則表達式可以理解的任何幫助:Python正則表達式模式
# Appropriate file name: P.002-night.jpg; File name to rename: bird.jpg
import os, os.path
import re
def displaymatch(match):
if match is None:
return None
return '<Match: %r, groups=%r>' % (match.group(), match.groups())
sampledir = "c:\\Users\\Name\\Desktop\\New folder"
os.chdir(sampledir)
FileList = os.listdir(os.getcwd())
num = 000
pattern = r"\w.\d{3}\-\w+.(jpg|Jpg|JPG)"
for filename in FileList:
if displaymatch(re.match(pattern, filename)) != None:
pass
else:
os.rename(filename, "P." + str("{0:0=3d}".format(num)) + "-" + filename)
num+= 1
你必須在你的格局開始的'r'。另外,ruby是爲ruby設計的,你可以使用http://pythex.org作爲python的重新模塊。 –
假設你的意思是說要成爲一個原始字符串('r「」'),而不是以r('「r」')開頭的字符串。你爲什麼使用'str.endswith' *和*'re.match'? – jonrsharpe
嗯,卡西米爾有它。在python中定義正則表達式時,通常使用r_outside_字符串,這使得它成爲「原始字符串」,因此反斜槓轉義將更容易。你想'r'[a-zA-Z] \。\ d {3} \ - [a-zA-Z0-9] + \。(jpg | Jpg | JPG)「' –