У меня есть raw.txt
, что ниже.
ok: [192.168.1.1] => {
"OS": "Ubuntu(Core) "
}
ok: [192.168.1.2] => {
"OS": "Ubuntu (Core) "
}
ok: [192.168.1.3] => {
"OS": "CentOS (Core) "
}
ok: [192.168.1.3] => {
"OS":"CentOS (Core) "
}
ok: [192.168.1.5] => {
"OS": "Red Hat(Core) "
}
ok: [192.168.1.6] => {
"OS": "CentOS (Core) "
}
Мой код Python ниже, как преобразовать в желаемый выход
f = open(r'raw.txt', 'r')
s = f.read()
list1 = s.split('\n')
ip_list = []
os_list = []
for i in list1[::3]:
ip_list.append(i)
for i in list1[1::3]:
os_list.append(i)
y = [z[10:25] for z in os_list]
os_l = [x.strip(' ').replace('"','').replace(' ','') for x in y]
ip_l = [z[5:18] for z in ip_list]
ip_l_rep = [x.strip(' ').replace(']','') for x in ip_l]
{ip_l_rep[n]:os_l[n] for n in range(len(os_l))}
Мой вывод и ожидаемый ниже
{'192.168.1.1': 'Ubuntu(Core)',
'192.168.1.2': 'Ubuntu(Core)',
'192.168.1.3': 'CentOS(Core)',
'192.168.1.5': 'RedHat(Core)',
'192.168.1.6': 'CentOS(Core)'}
Из-за использования нескольких операцийВ этой программе я решил написать с помощью регулярных выражений. Я написал псевдокод, но не успешно. как для извлечения \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}
.
Любое улучшение моего кода также приветствуется