Я не знаю о стандартном алгоритме , но для этого примера похоже, что вы должны искать экземпляры ' is '
и определять ключ как предыдущий текст, а значение как последующий текст.
Вот пример:
# Sample data
string = '''Ethernet1/2
transceiver is present
type is 1000base-T
name is CISCO-METHODE
part number is SP7041-E-R
revision is --
serial number is MTC19350BBK
nominal bitrate is 1300 MBit/sec
Link length supported for copper is 100 m
cisco id is 3
cisco extended id number is 4'''
sub = string.split('\n')
d = {}
d[sub[0]] = [x.strip() for x in sub[1:]]
e = {}
for key in d.keys():
e[key] = {}
for item in d[key]:
new = item.split(' is ')
e[key][new[0]] = new[1]
print(e)
{'Ethernet1/2':
{'transceiver': 'present',
'type': '1000base-T',
'name': 'CISCO-METHODE',
'part number': 'SP7041-E-R',
'revision': '--',
'serial number': 'MTC19350BBK',
'nominal bitrate': '1300 MBit/sec',
'Link length supported for copper': '100 m',
'cisco id': '3',
'cisco extended id number': '4'}}
Если есть экземпляры, имеющие более одного уровня, вы можете идентифицировать их с помощью дополнительного анализа, например поиска экземпляров ' for '
и повторяя процесс.