我的示例文本中提取數據是按如下:的Python /正則表達式 - 與分裂
data = """
NAME: "Chassis", DESCR: "Nexus5548 Chassis"
PID: N5K-C5548UP , VID: V01 , SN: SSI1F8A204LK
NAME: "Module 1", DESCR: "O2 32X10GE/Modular Universal Platform Supervisor"
PID: N5K-C5548UP , VID: V01 , SN: FOC1FS7Q2P
NAME: "Module 2", DESCR: "O2 16X10GE Ethernet Module"
PID: N55-M16P , VID: V01 , SN: FOC15840LYH
NAME: "Fan 1", DESCR: "Chassis fan module"
PID: N5548P-FAN , VID: N/A , SN: N/A
NAME: "Fan 2", DESCR: "Chassis fan module"
PID: N5548P-FAN , VID: N/A , SN: N/A
NAME: "Power supply 1", DESCR: "AC power supply"
PID: N55-PAC-750W , VID: V02 , SN: ART18790WA
NAME: "Power supply 2", DESCR: "AC power supply"
PID: N55-PAC-750W , VID: V02 , SN: ART182126V2
NAME: "Module 3", DESCR: "O2 Daughter Card with L3 ASIC"
PID: N55-D160L3-V2 , VID: V01 , SN: FOC14952NU2
"""
什麼我嘗試acheive是讓每個部分的描述PID和串行到一個類。
首先,我認爲ID把它們全部放在一行上,然後拆分這些行,以便兩行開始NAME:和PID:將在同一行上,然後每行都在同一行上,然後我可以獲取數據來自每一行。
我最新的嘗試迄今:
data = ''.join(sample.splitlines())
nd = re.split(r"(\NAME:)", data)
這給自己的行名和另一行的其餘部分,這一個是接近,但然後我需要刪除所有才有行NAME:on能夠迭代
data = ''.join(sample.splitlines())
nd = re.split(r"(SN:\s[\w\-]+)", data)
這很混亂,以前的嘗試更接近。
有誰知道我可以如何將每個部分的數據放到一條線上或更好的方式來做到這一點?
由於
你是否正在將整個文件讀入一個變量? –
它不是一個文件,當我的ssh腳本運行一個命令從設備上獲取庫存時,它被放入一個變量中 – AlexW
好吧,我想你可能會用['re.findall(r'NAME:\ s) * 「([^」] *) 「\ S * DESCR:\ S * 」[^「] *」 \ S * PID:\ S *(\ S +)\ S *,\ S * VID:\ S * \ S * \ s *,\ s * SN:\ s *(\ S +)',data)'](https://regex101.com/r/dzm2Aq/1)。 –