这似乎是一个问题,应该有一个相当直接的答案;可悲的是,我不是那么流利的Python,因为我还在学习,我还没有找到任何有助于谷歌。你知道吗
我的目标是根据字符串中已有的填充量来枚举该数字。我认为最好用一个例子来描述:
0-file
将从0-file
枚举到9-file
000-file
将从000-file
枚举到999-file
。你知道吗最终,我希望能够为[number][a-z]
、[a-z][number]
和[a-z][number].*
这样做(因此file10name.so
之类的东西不匹配),不过,我想我可以在以后用regex解决这部分问题。你知道吗
所以,问题归结为:
zfill
,但我对是否有更好的方法感兴趣)。你知道吗快速编辑:是的,psudo regex就是这样。它是为了传达这个概念,因此它为什么不匹配像“-”这样的东西。填充总是一个数字,不一定是0,但这没关系。到目前为止,这两个答案都是完美的。我能使它们适应我的需要。我已经处理完整的路径,但它的伟大有其他人看到这一点在未来。谢谢大家:)
这里是一个基于
str.lstrip
和str.format
的生成器实现。它将输入解析为标准字符串模板(例如'{0:02d}-file'
),然后循环相应的值并使用该模板创建输出:用法示例:
它有以下限制:
'0'
填充;以及但是你可以把它调整到你自己的目的。你知道吗
在编写代码之前,您应该为要匹配的文件找出正确的规范。您为要匹配的文件名(“
[number][a-z]
或[a-z][number]
”)提供的伪regexp甚至不包括您提供的示例,例如0-file
。你知道吗简单版本
但是,从表面上看,假设您也希望包含大写拉丁字母,下面是一个简单的函数,它将匹配
[number][a-z]
或[a-z][number]
,并返回适当的前缀、后缀和数字位数。你知道吗输出为:
注意,我正在使用标准的} 可能更适合于将来的校对。你知道吗
printf
样式的字符串格式将数字转换为0填充的字符串,例如%03d
表示0填充的3位数字。使用较新的^{优雅地处理完整路径和扩展
如果您的输入包含完整路径和带有扩展名的文件名(例如
/home/someone/project/foo000.txt
),并且您只想基于路径的最后一段进行匹配,那么请使用os.path.split
和.splitext
来执行此操作。你知道吗更新:修复丢失的路径分隔符
相关问题 更多 >
编程相关推荐