Вы можете сделать это следующим образом, используя regex
.
import re
s = 'FY4A-_AGRI--_N_DISK_1047E_L1-_FDI-_MULT_NOM_20191025000000_20191025001459_4000M_V0001.HDF'
re.findall(pattern, s)
Выход :
[('FY4A',
'AGRI',
'N',
'DISK',
'1047E',
'L1',
'FDI',
'MULT',
'NOM',
'20191025000000',
'20191025001459',
'4000M',
'V0001',
'HDF')]
Где шаблон:
pattern = ["^([A-Z]{2}[0-9]{1}[A-Z]{1})", # FF0F
"[-]{1}[_]{1}", # -_
"([A-Z]{4})", # FFFF
"[-]{2}[_]{1}", # --_
"([A-Z]{1})", # F
"[_]{1}", # _
"([A-Z]{4})", # FFFF
"[_]{1}",
"([0-9]{4}[A-Z]{1})",
"[_]{1}",
"([A-Z]{1}[0-9]{1})",
"[-]{1}[_]{1}",
"([A-Z]{3})",
"[-]{1}[_]{1}",
"([A-Z]{4})",
"[_]{1}",
"([A-Z]{3})",
"[_]{1}",
"([0-9]{14})",
"[_]{1}",
"([0-9]{14})",
"[_]{1}",
"([0-9]{4}[A-Z]{1})",
"[_]{1}",
"([A-Z]{1}[0-9]{4})",
"[.]{1}",
"([A-Z]{3})$"]
pattern = ''.join(pattern)