python - 如果文件名仅包含数字,则返回该数字

时间:2017-10-29 04:00:14

标签: python

所以我有一堆带有数字和/或字符串的文件。例如,文件名:

2214
2214-hello
2214_world
1123
1124
32415
92511
2123-John
helloapple
byebanana

我在csv上有一个名为ListA的名字列表:

2214
92511
helloapple
byebanana

我需要帮助来获取listA上的文件并且名称中只有数字。我知道isdigit()方法。但我实际上将这个文件名作为模式传递给目录路径。我的原始代码是这样的:

my_files = _globrec(r'C:/Test/', '\*apple*','\*banana*')

因此苹果和香蕉是我文件中的模式。我想在香蕉之后添加一个仅用于数字的模式。有没有办法做到这一点?

_globrec是一个递归函数,可以很好地匹配我的文件中的多个模式。我只发现这个(在另一篇文章中)以匹配多个模式,但我也对其他选项持开放态度。

def _globrec(path, *exts):
    dirs = [a[0] for a in os.walk(path)]
    f_filter = [d+e for d in dirs for e in exts]
    return [f for files in [glob.iglob(files) for files in f_filter] for f in files]

如果我打印my_files,最终结果应为:

C:/Test/2214
C:/Test/92511
C:/Test/helloapple
C:/Test/byebanana

非常感谢!

3 个答案:

答案 0 :(得分:0)

如果您只想匹配数字,请使用\d == [0-9] == [0123456789]。这是因为+Picasso.with(this).cancelRequest(myFavPicture); myFavPicture.setImageDrawable(null); myFavPicture.setImageResource(R.color.red); 表示匹配前一个模式中的一个或多个。

答案 1 :(得分:0)

您可以使用模式^ [0-9] + $来匹配数字。 ^表示必须以数字开头,$表示必须以数字结尾。

答案 2 :(得分:0)

假设_globrec是一个glob.glob递归。 它实际上是简单的正则表达式。

Regular Expression

然后你可以使用

glob.glob('*[0-9].*')

在你的情况下是:

_globrec(r'C:/Test/', '\*apple*','\*banana*', '*[0-9].*')

有关详细信息,请参阅Python文档:

glob

这个给出了一个更好的例子:

Python Module of the week: glob