Я пытаюсь манипулировать текстом из вывода SNMP sysDescr.0 с помощью Python 3, мне нужно использовать словарь, содержащий шаблоны и их замены следующим образом:
myDict = {
r' \(\/sw.+': '',
r' \(\/ws.+$': '',
r'Compiled on.{36}': '',
r'Ruckus Wireless, Inc. ': '',
r'Brocade Communications Systems, Inc. ': '',
r' Switch': '',
r', ROM': ' - ROM',
r' revision': 'revision',
r' IronWare': 'IronWare'
}
Я нашел здесь код ниже, нопервые три шаблона в словаре не работают, в то время как остальные в порядке, я не знаю почему:
def multiple_replace(myDict, text):
regex = re.compile(r'(%s)' % '|'.join(map(re.escape, myDict.keys())))
return regex.sub(lambda mo: myDict.get(mo.group(), mo.group()),text)
Как я могу изменить вышеуказанную функцию, чтобы иметь возможность правильно запускать RegEX для первоготри модели?Я попробовал большинство подобных решений здесь, но ни один из них не смог обработать первые три шаблона.
Моя простая версия приведена ниже, но мне действительно интересно посмотреть, как первое решение должно быть изменено для правильной работы, поскольку яЯ новичок в Python в любом случае:
def multiple_replace(myDict, text):
for key, val in myDict.items():
if re.search(key, text):
text = re.sub(key, val, text)
return text
Вот пример вывода:
HP J9856A 2530-24G-2SFP+ Switch, revision YA.16.05.0004, ROM YA.15.20 (/ws/swbuildm/rel_venice_qaoff/code/build/lakes(swbuildm_rel_venice_qaoff_rel_venice)) (Formerly ProCurve),.1.3.6.1.4.1.11.2.3.7.11.166
ProCurve J9088A Switch 2610-48, revision R.11.122, ROM R.10.06 (/sw/code/build/nemo),.1.3.6.1.4.1.11.2.3.7.11.77
Ruckus Wireless, Inc. ICX7250-48-HPOE, IronWare Version 08.0.70aT211 Compiled on Jan 18 2018 at 04:21:25 labeled as SPS08070a,.1.3.6.1.4.1.1991.1.3.62.2.2.1.1
и что мне нужно, чтобы он стал:
HP J9856A 2530-24G-2SFP+,revision YA.16.05.0004 - ROM YA.15.20,.1.3.6.1.4.1.11.2.3.7.11.166
HP J9088A 2610-48,revision R.11.122 - ROM R.10.06,.1.3.6.1.4.1.11.2.3.7.11.77
ICX7250-48-HPOE,IronWare Version 08.0.70aT211 SPS08070a,.1.3.6.1.4.1.1991.1.3.62.2.2.1.1
ЧестноЯ понятия не имею, что лучше или быстрее, ваш вклад приветствуется.
спасибо