Python - 如何解析数组中的字符串?

时间:2017-05-10 19:49:02

标签: python arrays string parsing

我是Java / C编程,努力学习Python。 (我在Linux机器上用Python 2.4.3编写。)我有一个简单的程序,它可以telnet到Cisco路由器,登录,然后捕获配置。路由器的配置存储在名为" output":

的变量中
#!/usr/bin/python

import telnetlib
import datetime
import sys

def telnetFunction( host ):
  print("Telnetting to device "+host+"...\n")
  tn = telnetlib.Telnet(host)
  # ...use tn.read_until() and tn.write() to log into the router...  ...this works...
  tn.write("terminal length 0"+"\n")
  tn.write("show run"+"\n")
  tn.write("exit"+"\n")
  output=tn.read_all()      # router config stored as "output"
  return output

host = "192.168.102.133"
output=telnetFunction( host )

以上代码有效。通过使用一堆不同的print()语句,我可以看到路由器的配置全部在"输出",我假设是一个换行的字符串数组.... ?对此并不完全确定; telnetlib文档没有指定。

我现在的问题是我需要我的程序再次逐步输出,一次提取一个字符串。我需要这样的东西:

while(iterating through output)
   tmpString = output.getNextStr()

所以如果输出看起来像这样:

Current configuration : 34211 bytes\n!\nversion 12.3\nno service pad\n...etc...

我需要tmpString在上面循环的每次迭代中等于跟随:

tmpString = "Current configuration : 34211 bytes"
tmpString = "!"
tmpString = "version 12.3"
tmpString = "no service pad"

我一直在谷歌搜索几个小时,但我很难过。 (部分问题是我不清楚"输出"确实是一个数组。它可能是一个字符串吗?)我玩过split()并使用[]&# 39;但到目前为止没有运气。有没有人知道我哪里出错了?谢谢,-ROA

2 个答案:

答案 0 :(得分:2)

正如您在示例中所述,假设输出定义为

output = 'Current configuration : 34211 bytes\n!\nversion 12.3\nno service pad'

下一步是将字符串拆分为\ n以便

output_list = output.split('\n')

这将生成以下列表

output_list = ['Current configuration : 34211 bytes', '!', 'version 12.3', 'no service pad']

然后你可以迭代这个列表。

将它们捆绑在一起

#!/usr/bin/python

import telnetlib
import datetime
import sys

def telnetFunction( host ):
  print("Telnetting to device "+host+"...\n")
  tn = telnetlib.Telnet(host)
  # ...use tn.read_until() and tn.write() to log into the router...  ...this works...
  tn.write("terminal length 0"+"\n")
  tn.write("show run"+"\n")
  tn.write("exit"+"\n")
  output=tn.read_all()      # router config stored as "output"
  return output

host = "192.168.102.133"
output=telnetFunction( host )
output_list = output.split('\n')
for item in output_list:
    print item

答案 1 :(得分:1)

我假设您的变量tn被视为文件句柄。因此,当您读取此“文件”一次时,指针位于文件的末尾,需要重置:

tn.seek(0)

在执行第二个循环之前调用它。

或者,您可以像这样迭代输出:

for line in output.split("\n"):
    print line