正则表达式,glob,Python
Regular expression, glob, Python
我有一个文件夹,里面有很多文件。
有一组包含 pc_0.txt、pc_1.txt、...、pc_699.txt。
我想 select pc_200 - > 到 pc_699.txt
之间的所有文件
如何?
for filename in glob.glob("pc*.txt"):
global_list.append(filename)
对于这种特定情况,glob
已经支持您的需要(参见 fnmatch
docs for glob wildcards)。你可以这样做:
for filename in glob.glob("pc[23456]??.txt"):
如果您需要特别说明两个尾随字符是数字(某些文件可能在那里有非数字字符),您可以将 ?
替换为 [0123456789]
,否则,我发现 ?
不那么让人分心。
在更复杂的情况下,您可能不得不求助于正则表达式,您可以在此处使用:
import re
for filename in filter(re.compile(r'^pc_[2-6]\d\d\.txt$').match, os.listdir('.')):
但考虑到 glob 式通配符已经足够好了,您现在还不需要大刀阔斧。
我有一个文件夹,里面有很多文件。 有一组包含 pc_0.txt、pc_1.txt、...、pc_699.txt。 我想 select pc_200 - > 到 pc_699.txt
之间的所有文件如何?
for filename in glob.glob("pc*.txt"):
global_list.append(filename)
对于这种特定情况,glob
已经支持您的需要(参见 fnmatch
docs for glob wildcards)。你可以这样做:
for filename in glob.glob("pc[23456]??.txt"):
如果您需要特别说明两个尾随字符是数字(某些文件可能在那里有非数字字符),您可以将 ?
替换为 [0123456789]
,否则,我发现 ?
不那么让人分心。
在更复杂的情况下,您可能不得不求助于正则表达式,您可以在此处使用:
import re
for filename in filter(re.compile(r'^pc_[2-6]\d\d\.txt$').match, os.listdir('.')):
但考虑到 glob 式通配符已经足够好了,您现在还不需要大刀阔斧。