【问题标题】:Regular expression, glob, Python正则表达式、glob、Python
【发布时间】:2017-04-24 11:10:04
【问题描述】:

我有一个文件夹,里面有很多文件。 有一组包含 pc_0.txt,pc_1.txt,...,pc_699.txt。 我想选择 pc_200 -> 到 pc_699.txt 之间的所有文件

怎么做?

for filename in glob.glob("pc*.txt"):
    global_list.append(filename)

【问题讨论】:

  • 旁注:如果您只是将每个值附加到全局列表中,请跳过显式循环并执行以下操作:global_list.extend(glob.glob("pc*.txt"))(或您选择的任何 glob 模式);让 Python 直接批量执行工作比不必要的显式循环更快、更简洁。

标签: python glob


【解决方案1】:

对于这种特定情况,glob 已经支持您所需要的(请参阅fnmatch docs for glob wildcards)。你可以这样做:

for filename in glob.glob("pc[23456]??.txt"):

如果您需要特别说明两个尾随字符是数字(某些文件可能有非数字字符),您可以将 ?s 替换为 [0123456789],否则,我会找到 @987654327 @少一点分心。

在更复杂的情况下,您可能不得不求助于正则表达式,您可以在这里这样做:

import re

for filename in filter(re.compile(r'^pc_[2-6]\d\d\.txt$').match, os.listdir('.')):

但鉴于 glob 样式的通配符工作得很好,您现在还不需要大炮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2010-09-12
    • 2011-08-06
    相关资源
    最近更新 更多