python f-string 在制作文件列表时包括除 0 以外的所有数字

python f-string include all numbers except 0 while making a file list

我想创建一个包含 extend() 的文件列表,同时忽略 _file0.h5 中以 0 结尾的所有文件名。我有这一行用于将所有文件连接到一个列表中

data_files_0.extend(sorted(glob(f"{directory}*_file{filenum}.h5") ) ) 

我正在尝试学习如何在此处实施正则表达式,并且我尝试了

    filenum = re.match(r'[^0]')

通过将它放在给出错误的前一行之上 TypeError: match() missing 1 required positional argument: 'string'

我在这里很困惑,所有带正则表达式的 f-string 示例对我一点帮助都没有。

re.match 不会自动查找包含该模式的字符串 - 您必须为其提供字符串 - 这是缺少参数错误的原因。 示例 - re.match('[^0]', "abc0123") 将根据模式“[^0]”检查字符串“abc0123”中的匹配项。

[^0] 在这里可能是错误的模式,因为它匹配字符串中任何位置的任何字符,但 0 除外。您可能想使用 .*0\.h5 之类的东西,它匹配任何以 '0.h5' 结尾的字符串。您还可以查看 regexr.com,这是一个非常有用的网站,可帮助您了解正则表达式模式的一般工作原理。

对于问题的另一部分 - 查找文件 - 您可能需要先获取所有文件名,然后检查哪些以 0 结尾或不以 0 结尾:

all_files = glob(f"{directory}*_file*.h5")
for f in all_files: 
    if not re.match('.*0\.h5', f):
        data_files_0.append(f)