解析 python 中的变量

Parse through variable in python

我想将 telnet 输出存储在一个字符串变量中并通过它进行解析以获取我需要的信息,类似于如果我要将它输出到一个文件并通过它进行解析(这种方式我不不需要)。

目前我正在尝试像使用文本文档一样使用 "for line" 参数,但它似乎无法识别变量中的单独行(字符串变量是否删除格式我我不确定)。

所有 Telnet 脚本都能正常工作,因为我之前已将它们输出到文本文件并以这种方式解析它们,我只是想减少一个步骤。

以下是 telnet get 请求的示例

tn.write("SomeCommand::SOMEPARAMETERS;\n")
tn.read_until(" EN=0   ENDESC=Succeeded.", TIMEOUT)
output = tn.read_very_eager()

这是一个 telnet 输出示例

Description of Information
-----------------------------------------
Name1     Name2      Name3      Name4      
example1  exampe2    example3   example4
-----------------------------------------

这是我为尝试解析此内容而编写的内容。

array = []

for line in output:  # Read lines from CPU MEM TEMP
    if "example1" in line:
        for word in line.split():
            array.append(word)

Name1 = array[0]
Name2 = array[1]
Name3 = array[2]
Name4 = array[3]

print (Name1 + Name2 + Name3, etc....)

任何人都可以阐明我是否对此有正确的想法,或者是否需要以完全不同的方式来简单地解析 txt 文件(我正在使用类似的代码)

谢谢大家

您需要先将输出分成几行(我假设这些行由换行符分隔):

for line in output.splitlines():  # Read lines from CPU MEM TEMP
    if "example1" in line:
        for word in line.split():
            array.append(word)

(编辑:根据@PaulMcGuire 的建议将 .split('\n') 替换为 .splitlines()

我会用正则表达式来做:

import re

array = []

lines = output.split('\n')

for line in lines:  # Read lines from CPU MEM TEMP
    if re.search('example1', line):
        line = re.sub(r'\s+', ' ', line)
        for word in line.split(' '):
            array.append(word)

print array

此代码打印下一个输出:

['example1', 'exampe2', 'example3', 'example4']