Python fnmatch的模式/正则表达式格式

时间:2013-09-11 03:03:39

标签: python regex

我的所有文件名都包含以下模式:

datasetname_%Y-%m-%d_%H.%M.%S.out

使用time.strftime("%Y-%m-%d_%H.%M.%S")

添加时间戳

我想要做的是检查文件名是否已经包含时间戳,如果已经包含时间戳,请将其删除。为此,我可以使用split。我可以使用fnmatch来测试文件名是否包含模式。

我遇到问题的部分是找出正则表达式模式,从我正在使用的格式中提取fnmatch

非常感谢任何帮助和/或建议。

2 个答案:

答案 0 :(得分:1)

我认为你可能会使它变得比它需要的更复杂。

来自python文档http://docs.python.org/2/library/fnmatch.html

  

该模块提供对Unix shell样式通配符的支持   与正则表达式不同(在re中记录)   模块)。

如果您的数据集名称为 derf ,示例将变为:

    import fnmatch
    import os

    dsn = 'derf_'

    for file in os.listdir('.'):
        if fnmatch.fnmatch(file, dsn+'*.out'):
            print file

答案 1 :(得分:1)

这最终似乎对我有用:

regexp = re.compile('_([0-9-_.]+\...)')
if regexp.search(fileName) is not None:
    #Do something with the filename

我使用了基于drewk上面评论的模式(谢谢)。到目前为止,这种模式似乎有效,但可能需要进行一些调整。无论如何,它让我比我的位置更进一步。

还要感谢WombatPM。你的答案实际上帮助了我遇到的一个单独的问题。