Python3-分割字符串并仅保留结尾部分

时间:2020-01-21 13:06:50

标签: python python-3.x string

我有以下字符串;

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

我正在尝试打印两个部分,第一个是“ N9K-C92160YC-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 个答案:

答案 0 :(得分:3)

在空白处分割,然后访问结果数组中的第二个和最后一个元素:

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

答案 1 :(得分:0)

似乎您的文本结构合理,因此使用适当的名称会很有用:

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, ":")

答案 2 :(得分:0)

只需在空间上分割它并去除多余的空间即可。

text = "PID: N9K-C92160YC-X      ,  VID: V01 ,  SN: FDO211410AK"
parts = [txt.strip() for txt in text.split()]
print(parts[1], parts[-1])

答案 3 :(得分:0)

如果字符串(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