猿问

从字符串的两端删除子字符串

我有一些文件名包含了一些多余的话,我想摆脱的,如: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


那么,我如何设法也摆脱背单词呢?


慕村9548890
浏览 156回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答