如何将python formatstring与列表中的元素匹配?

2024-04-29 18:57:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python,这里有一个不同文件类型的文件名列表。文本文件可能如下所示:

01.txt
02.txt
03.txt
...

假设文本文件都是这样编号的。现在我想得到所有的文本文件,数字从1到25。因此,我想通过GUI提供一个类似%02i.txt的formatstring,以便识别所有匹配的文件名。你知道吗

到目前为止,我的解决方案是一个嵌套的for循环。外循环遍历整个列表,每个文件的内循环计数从1到25:

fmt = '%02i.txt'
for f in files:
    for i in range(1, 25+1):
        if f == fmt % i:
            # do stuff

这个嵌套循环看起来不太漂亮,复杂性是O(n²)。所以在很长的名单上可能需要一段时间。有没有更聪明的方法?

嗯,是的,我可以使用像^\d{2}\.txt$这样的正则表达式,但是带有%的formatstring更容易键入。你知道吗


Tags: 文件intxt列表for文件名gui数字
2条回答

迭代文件的一种更为python的方法是使用^{}模块。你知道吗

>>> import glob
>>> for f in glob.iglob('[0-9][0-9].txt'):
        print f


01.txt
02.txt
03.txt

可以使用集合:

fmt = '%02i.txt'
targets = {fmt % i for i in range(1, 25+1)}

那么

for f in files:
    if f in targets:
        # do stuff

相关问题 更多 >