所以我有一堆带有数字和/或字符串的文件。例如,文件名:
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
非常感谢!
答案 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递归。 它实际上是简单的正则表达式。
然后你可以使用
glob.glob('*[0-9].*')
在你的情况下是:
_globrec(r'C:/Test/', '\*apple*','\*banana*', '*[0-9].*')
有关详细信息,请参阅Python文档:
这个给出了一个更好的例子: