簡體   English   中英

在正則表達式中添加輸入變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM