我有一个文件名,其中包含一些我想去掉的多余单词,比如:VIS
,THE
等等
我是这个正则表达式,但问题是要删除的单词可能出现在文件名的前面或后面。为了更清楚,一些文件名示例如下:
filenames = ['a_VIS-MarnehNew_24RGB_1110.jpg',
'Marne_04_Vis.jpg',
'VIS_jeep_smoke.jpg',
'IR_fk_ref_01_005.jpg',
'c_LWIR-MarnehNew_24RGB_1110.jpg',
'LWIR-MarnehNew_15RGB_603.jpg',
'Movie_01_IR.jpg',
'THE_fk_ge_03_005.jpg']
冗余字是VIS
、Vis
、IR
、LWIR
、THE
和前面的每个字符(如果出现在前面),或者后面的每个字符(如果出现在后面)。你知道吗
正确的例子是:
filenames = ['MarnehNew_24RGB_1110',
'Marne_04',
'jeep_smoke',
'fk_ref_01_005',
'MarnehNew_24RGB_1110',
'MarnehNew_15RGB_603',
'Movie_01',
'fk_ge_03_005']
我尝试了这个代码,但是(显然对于后面的案例来说它是不够的:
import re
pattern = re.compile('(?:VIS|Vis|IR|LWIR)(?:-|_)(\w+)')
for i, filename in enumerate(filenames):
matches = re.search(pattern, filename)
if matches:
print(i, matches.group(1))
0 MarnehNew_24RGB_1110
2 jeep_smoke
3 fk_ref_01_005
4 MarnehNew_24RGB_1110
5 MarnehNew_15RGB_603
那么,我怎样才能摆脱背诵呢?你知道吗
用你的例子
它需要被“无”替换,请参见a demo on regex101.com。
分解如下:
相关问题 更多 >
编程相关推荐