[英]Adding input variable inside regex
我正在嘗試編寫一個代碼來找到所有首選的文件擴展名,然后將它們移動到設計的文件夾中。 代碼正在運行,但我需要在文件中手動輸入文件擴展名。 我想要做的是添加一個輸入變量並將其放入 re.compile(),因此我不需要在需要時為不同的文件類型編輯文件。
這部分我需要編輯:
# Go through the listFiles and find specific file types.
picRegex = re.compile(r'.*\.jpg|.*\.png')
fileMatches = list(filter(picRegex.match, listFiles)
這適用於我的代碼中已經存在的文件類型,但正如我所說,我希望它更靈活。 有什么辦法可以改善這一點嗎? 謝謝!
正則表達式只是你傳遞給re.compile
和朋友的字符串。 您可以使用完整的 Python 字符串格式調色板。
也許像這樣,然后?
picPegex = re.compile('|'.join([r'.*\.{0}'.format(x) for x in ('jpg', 'png')]))
如果你總是在行尾需要這些,也許只是
if thing.endswith(tuple(['.{0}' for x in ('jpg', 'png')])):
print('yowza')
使用字符串方法生成正則表達式:
file_extensions = ['.png','.jpg']
regex = '.*(%s)' % '|'.join(map(re.escape, file_extensions))
filename_matches = list(filter(re.compile(regex).fullmatch, filenames)
更好的是,根本不要使用正則表達式,而是endswith
:
file_extensions = tuple(['.png','.jpg'])
filename_matches = [f for f in filenames if f.endswith(file_extensions)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.