簡體   English   中英

帶有可變字符串的python中的正則表達式

[英]Regular expression in python with variable strings

我有傻瓜。 python中的字符串:

Vladimir_SW_crop_mask_ERA.hdr
Ust_Ordynskiy_Buryatskiy_AO_SW_crop_mask_ERA.hdr
Ingush_WW_crop_mask.dat

我想解析這些字符串,以便:

  1. 獲取作物類型,可以是SW或WW

  2. 獲取區域名稱,該名稱是_SW或_WW之前的文本

我正在執行str.split('_')[0]以獲取區域名稱,但是在Ust_Ordynskiy_Buryatskiy_AO_SW_crop_mask_ERA.hdr情況下失敗,其中區域名稱為Ust_Ordynskiy_Buryatskiy_AO

您可以對partitionrpartition進行以下操作:

>>> s = 'Vladimir_SW_crop_mask_ERA.hdr'
>>> s.partition('_crop')[0].rpartition('_')[::2]
('Vladimir', 'SW')
>>> s = 'Ust_Ordynskiy_Buryatskiy_AO_SW_crop_mask_ERA.hdr'
>>> s.partition('_crop')[0].rpartition('_')[::2]
('Ust_Ordynskiy_Buryatskiy_AO', 'SW')

以下正則表達式應該起作用:

(.*)_(SW|WW)

匹配所有內容,直到下划線,然后是SWWW然后將其放在第一個匹配組中,然后將以下SWWW放在第二組中:

import re

strs = ["Vladimir_SW_crop_mask_ERA.hdr",
        "Ust_Ordynskiy_Buryatskiy_AO_SW_crop_mask_ERA.hdr",
        "Ingush_WW_crop_mask.dat"]

for s in strs:
    print(re.match("(.*)_(SW|WW)", s).groups())

結果:

('Vladimir', 'SW')
('Ust_Ordynskiy_Buryatskiy_AO', 'SW')
('Ingush', 'WW')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM