从文本文件python中提取并获取值

时间:2017-01-08 17:33:36

标签: python python-2.7 python-3.x paramiko

我已经使用paramiko库在远程机器上执行了ssh命令,并将输出写入文本文件。现在,我想从文本文件中提取几个值。文本文件的输出看起来像粘贴在

下面
b'\nMS Administrator\n(C) Copyright 2006-2016 LP\n\n[MODE]> SHOW INFO\n\n\nMode: \nTrusted Certificates\n1 Details\n------------\n\tDeveloper ID: MS-00c1\n\tTester ID: ms-00B1\n\tValid from: 2030-01-29T06:51:15Z\n\tValid until: 2030-01-30T06:51:15Z\n\t

我如何获得开发者ID和测试者ID的值。文件很大。

根据用户的建议,我已经编写了下面的代码段。

file = open("Output.txt").readlines()
for lines in file:
    word = re.findall('Developer\sID:\s(.*)\n', lines)[0]
    print(word)

我看到错误IndexError:list index超出范围 如果我删除索引。我看到空输出

3 个答案:

答案 0 :(得分:0)

file = open("Output.txt").readlines()
developer_id=""

for lines in file:
    if 'Developer ID' in line:                                                                                         
        developer_id = line.split(":")[-1].strip()                                                                     

print developer_id

答案 1 :(得分:0)

您可以使用正则表达式

text = """\nMS Administrator\n(C) Copyright 2006-2016 LP\n\n[MODE]> SHOW INFO\n\n\nMode: \nTrusted Certificates\n1 Details\n------------\n\tDeveloper ID: MS-00c1\n\tTester ID: ms-00B1\n\tValid from: 2030-01-29T06:51:15Z\n\tValid until: 2030-01-30T06:51:15Z\n\t"""
import re
developerID = re.match("Developer ID:(.+)\\n", text).group(0)
testerID = re.match("Tester ID:(.+)\\n", text).group(0)

答案 2 :(得分:0)

如果您的输出格式一致,您可以使用像line.split()这样简单的东西:

developer_id = line.split('\n')[11].lstrip()
tester_id = line.split('\n')[12].lstrip()

同样,这假设每一行都使用相同的格式。否则,请按照上面的建议使用正则表达式。