У меня есть следующее, и я пытаюсь разбить его на словарь Key: Value, где ключ - это протокол + версия, а значение - поддерживается ли он или нет.
['SSLv2 not offered (OK)',
'SSLv3 not offered (OK)',
'TLS 1 not offered',
'TLS 1.1 not offered',
'TLS 1.2 offered (OK)',
'TLS 1.3 not offered and downgraded to a weaker protocol',
'NPN/SPDY h2, http/1.1 (advertised)',
'ALPN/HTTP2 h2, http/1.1 (offered)']
Моя проблема в том, что я не могу придумать, как правильно разделить это, я не могу разделить по вкладкам, так как данные используют пробелы, и я не могу разделить по пробелам, потому что некоторые протоколы там тоже есть место. Пример:
re.split(r'\s+', entries.strip(), 1)
['SSLv2', 'not offered (OK)'], ['SSLv3', 'not offered (OK)'], ['TLS', '1 not offered'], ['TLS', '1.1 not offered'], ['TLS', '1.2 offered (OK)'], ['TLS', '1.3 not offered and downgraded to a weaker protocol'], ['NPN/SPDY', 'h2, http/1.1 (advertised)'], ['ALPN/HTTP2', 'h2, http/1.1 (offered)']]
Как вы можете видеть, все они работают в основном нормально, за исключением некоторых протоколов, таких как: ['ALPN/HTTP2', 'h2, http/1.1 (offered)']
Вот как выглядят исходные данные:
SSLv2 not offered (OK)
SSLv3 not offered (OK)
TLS 1 not offered
TLS 1.1 not offered
TLS 1.2 offered (OK)
TLS 1.3 not offered and downgraded to a weaker protocol
NPN/SPDY h2, http/1.1 (advertised)
ALPN/HTTP2 h2, http/1.1 (offered)
И я хочу, чтобы мой окончательный результат выглядел так:
{
'SSLv2': 'not offered (OK)',
'SSLv3': 'not offered (OK)',
'TLS 1': 'not offered',
'TLS 1.1': 'not offered',
'TLS 1.2': 'offered (OK)',
'TLS 1.3': 'not offered and downgraded to a weaker protocol',
'NPN/SPDY': 'h2, http/1.1 (advertised)',
'ALPN/HTTP2': 'h2, http/1.1 (offered)'
}