首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中使用glob查找包含非连续数字的路径名

在Python中使用glob查找包含非连续数字的路径名
EN

Stack Overflow用户
提问于 2019-04-10 03:39:36
回答 2查看 109关注 0票数 2

有没有办法找到编号不连续的文件名?更具体地说,我希望列出包含以下数字的文件名:

代码语言:javascript
运行
复制
path +'*.s201701*.nc'
path +'*.s201801*.nc'
path +'*.s201901*.nc'
path +'*.s201702*.nc'
path +'*.s201802*.nc'
path +'*.s201902*.nc'
path +'*.s201712*.nc'
path +'*.s201812*.nc'
path +'*.s201912*.nc' 

我可以得到'2017‘到'2019’的变化,因为数字是连续的,但不是'01','02','12',因为它们不是。这不起作用:

代码语言:javascript
运行
复制
glob.glob(path +'*.s201[7-9][01,02,12]*.nc'

这是可行的,

代码语言:javascript
运行
复制
glob.glob(path +'*.s201[7-9][0-1][1-2]*.nc'

但也给了我s201*11*.nc格式的文件,这是我不想要的。有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-10 12:32:44

你不能用一个glob来做到这一点--语言还不够复杂--但你可以用两个glob做到这一点:

代码语言:javascript
运行
复制
glob.glob(path +'*.s201[7-9]0[1-2]*.nc') + glob.glob(path +'*.s201[7-9]12*.nc')
票数 1
EN

Stack Overflow用户

发布于 2019-04-10 04:12:43

您可以在结果表单os.listdir上使用正则表达式检查重复的数字。我在脚本所在的目录中创建了一个示例文件,其中包含重复的数字。使用第一个方法会返回一个空列表。删除列表理解中的“not”将返回有问题的文件名。

代码语言:javascript
运行
复制
import os
import re

files = [f for f in os.listdir(path) if not re.search(r'(\d)\1+\b', f)]

print(files)
[]

删除“not”以查找重复数字:

代码语言:javascript
运行
复制
files = [f for f in os.listdir(path) if re.search(r'(\d)\1+\b', f)]
print(files)
['s201911.txt']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55600142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档