python 全局匹配模式
python glob matching patterns
我正在查看 glob 手册页,但无法使匹配模式在 python 中工作。到目前为止我有这个...
glob.glob('file.*') + glob.glob('file[0-9].*')
这行得通 return 只要文件编号不超过 9 就给我一个列表。如果我创建 file100.txt 它不起作用,如果我尝试范围 [0 -100] 或 [0-1000] 它不会改变任何东西...
所以我的问题是我怎样才能使这个匹配任何数字....还有我怎样才能将它组合成一个语句,它似乎应该是一次语句。
普通的 globbing 不能处理那种类型的事情。您不能指定特定字符模式的重复。您将无法通过一个电话来完成。你最好的选择是只使用 file*.txt
,然后 post 处理结果列表以消除不匹配你的模式的列表,例如通过使用 re
模块中的正则表达式函数。
我很确定 glob
的表现力不足以满足您的需求,因此我建议获取超出您需要的内容,然后进行过滤。例如。 (未经测试)
import re
file_names = [name for name in glob.glob('file*.*') if re.match(r'^file\d*\.', name]
我正在查看 glob 手册页,但无法使匹配模式在 python 中工作。到目前为止我有这个...
glob.glob('file.*') + glob.glob('file[0-9].*')
这行得通 return 只要文件编号不超过 9 就给我一个列表。如果我创建 file100.txt 它不起作用,如果我尝试范围 [0 -100] 或 [0-1000] 它不会改变任何东西...
所以我的问题是我怎样才能使这个匹配任何数字....还有我怎样才能将它组合成一个语句,它似乎应该是一次语句。
普通的 globbing 不能处理那种类型的事情。您不能指定特定字符模式的重复。您将无法通过一个电话来完成。你最好的选择是只使用 file*.txt
,然后 post 处理结果列表以消除不匹配你的模式的列表,例如通过使用 re
模块中的正则表达式函数。
我很确定 glob
的表现力不足以满足您的需求,因此我建议获取超出您需要的内容,然后进行过滤。例如。 (未经测试)
import re
file_names = [name for name in glob.glob('file*.*') if re.match(r'^file\d*\.', name]