Windows和Linux中正则表达式结果不同?
我写了一些代码,用于一个项目,这个项目需要在文件名的开头进行匹配。下面是我在Windows上运行正常的代码。
for root, dirs, files in os.walk(up_path):
files.sort()
total_files += len(files)
print total_files
for fn in files:
print fn
filename_zero, extension = os.path.splitext(fn)
path2 = os.path.join(root, fn)
ID = re.match('^/d{1,10}', fn).group()
print ID
在Windows上,如果一个文件叫做 1234567-1.jpg
,那么打印出来的ID会是 1234567
。
但是在Linux上,我遇到了一个 Nonetype error
,打印的ID返回的是 NONE
。
我知道这意味着没有匹配到内容,所以没有生成ID。
由于唯一的区别是从Windows转到Linux,那这两个系统之间有什么不同的要求呢?
我该怎么做才能让它按预期工作呢?
1 个回答
2
错误,不是 /d
,而是 \d
,所以你的代码应该是:
ID = re.match('^\d{1,10}', fn).group()
\d
是用来匹配数字的,也就是 [0-9]
,表示从0到9的所有数字。