我有这种格式的文件名:
anytext_NUMBER_svm.pkl
我需要遍历目录中的所有文件和看起来像这样的文件:
file1.txt
file2.txt
anytext_1_svm.pkl
anytext_2_svm.pkl
anytext_3_svm.pkl
匹配的文件将是这样的:
anytext_1_svm.pkl
anytext_2_svm.pkl
anytext_3_svm.pkl
如何使用 python 正则表达式来做到这一点?
一个选项:
re
iglob
代码:
from glob import iglob
import os.path
for fname in iglob('*_*_svm.pkl'):
path, name = os.path.split(fname)
anytext, digit, rest = name.split('_', 2)
if digit.isdigit(): # add criteria for anytext if required...
# ....
这个正则表达式应该解决你的问题:
>>> import re
>>> regex = re.compile(r'.+_\d+_svm\.pkl')
>>> regex.search('anytext_1_svm.pkl') != None
True
但你绝对应该看看文档:http ://docs.python.org/library/re.html
捕获“anytext_NUMBER_svm.pkl”的正则表达式非常简单。
r'.+_\d+_svm\.pkl'
我建议对该页面进行审查:http: //docs.python.org/py3k/library/re.html#module-re
它将帮助您了解如何编写正则表达式并确保您正确匹配事物。对于数字,使用 [0-9]*,使用 _ 分隔您的组,并编写一些匹配检查条件的东西,这将是一个快速的项目。
import glob
file_list = glob.glob('anytext_[0-9]_svm.pk1')