[英]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
我想解析這些字符串,以便:
獲取作物類型,可以是SW或WW
獲取區域名稱,該名稱是_SW或_WW之前的文本
我正在執行str.split('_')[0]以獲取區域名稱,但是在Ust_Ordynskiy_Buryatskiy_AO_SW_crop_mask_ERA.hdr
情況下失敗,其中區域名稱為Ust_Ordynskiy_Buryatskiy_AO
您可以對partition和rpartition進行以下操作:
>>> 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)
匹配所有內容,直到下划線,然后是SW
或WW
然后將其放在第一個匹配組中,然后將以下SW
或WW
放在第二組中:
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.