re.match
совпадает только в начале строки.Чтобы найти соответствие в любом месте строки, вам нужно вместо этого использовать re.search
.Например (я не следовал числовым кодам, которые вы добавляете на основе различных комбинаций осадков, поэтому приведенный ниже пример просто выводит один или несколько типов осадков на группу для иллюстрации):
from pytaf import TAF
import re
values = "TAF KZZZ 072336Z 0800/0900 11006KT P6SM SN OVC060 FM080100 11006KT P6SM SN OVC060 FM080200 11006KT P6SM SN OVC060"
precip = {
'snow': r'SN',
'pellets': r'-PL|IC',
'freezing': r'FZRA|FZDZ',
'mix': r'RAPL|PLRA|SNPL|PLSN|SNFZDZ|SNFZRA|RASN|SNRA|DZSN|SNDZ'
}
precip_tf = []
precip_groups = TAF(values)._raw_weather_groups
for g in precip_groups:
precip_tf.append(' '.join([k for k, v in precip.items() if re.search(v, g)]))
print(precip_tf)
# ['snow', 'snow', 'snow']