在python中解析变量

时间:2015-01-27 23:40:53

标签: python telnet

我想在一个字符串变量中存储一个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文件(我使用类似的代码工作)

全部谢谢

2 个答案:

答案 0 :(得分:1)

您需要先将行分割成行(我假设这些行用换行符分隔):

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()

答案 1 :(得分:0)

我会用正则表达式来做:

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']