Python3 - Разделение строки и сохранение только конечной части - PullRequest
0 голосов
/ 21 января 2020

У меня есть строка ниже;

PID: N9K-C92160YC-X      ,  VID: V01 ,  SN: FDO211410AK

Я пытаюсь распечатать две части, первая из которых "N9K-C92160Y C -X", а вторая - "FDO211410AK"

Мне удалось получить PID с помощью;

modeltype = net_connect.send_command('sh inv | i Chassis next 1 | i PID').split("  ")[0]]
print(modeltype)

, что дает мне:

PID: N9K-C92160YC-X

Я не могу понять, как разделить и сохранить только SN хотя;

serialnumber = net_connect.send_command('sh inv | i Chassis next 1 | i PID').split("SN:")[0]
print(serialnumber)

Вывод:

PID: N9K-C92160YC-X      ,  VID: V01 ,  

Ответы [ 4 ]

3 голосов
/ 21 января 2020

Разделить пробел, а затем получить доступ ко второму и последнему элементу из полученного массива:

str = "PID: N9K-C92160YC-X      ,  VID: V01 ,  SN: FDO211410AK"
parts = re.split(r'\s+', str)
print(parts[1])
print(parts[-1])

Это печатает:

N9K-C92160YC-X
FDO211410AK
0 голосов
/ 21 января 2020

Если нет четкого формата, какие записи содержатся в строке (PID, VID, SN или другие), вы должны использовать регулярные выражения для извлечения необходимой информации:

import re

str = "PID: N9K-C92160YC-X      ,  VID: V01 ,  SN: FDO211410AK"

pid = re.search(r"PID: ([a-zA-Z0-9-]+)", str).group(1)
print(pid)
# N9K-C92160YC-X

sn = re.search(r"SN: ([a-zA-Z0-9-]+)", str).group(1)
print(sn)
# FDO211410AK

0 голосов
/ 21 января 2020

Просто разделите его на пробелы и уберите лишние пробелы.

text = "PID: N9K-C92160YC-X      ,  VID: V01 ,  SN: FDO211410AK"
parts = [txt.strip() for txt in text.split()]
print(parts[1], parts[-1])
0 голосов
/ 21 января 2020

Кажется, ваш текст структурирован, поэтому было бы полезно дать правильные имена:

def parts(s, separator):
    return [e.strip() for e in s.split(separator)]

s = "PID: N9K-C92160YC-X      ,  VID: V01 ,  SN: FDO211410AK" 
pid, vid, sn = parts(s, ",")
pid_key, pid_value = parts(pid, ":")
sn_key, sn_value = parts(sn, ":")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...