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