2017-04-17 105 views
1

下面是文件输出。Python搜索和打印值

vNIC Template: 
Name: vNIC-120-A 
Type: Updating Template 
Fabric ID: A B 

Ethernet Interface: 
    Name: 2-native 
    Dynamic MAC Addr: Derived 
    Default Network: Yes 
    State: progress 

    Name: nfs 
    Dynamic MAC Addr: Derived 
    Default Network: No 

    Name: vmotion 
    Dynamic MAC Addr: Derived 
    Default Network: No 

我该如何验证名称:2-native name 2-native exit or not。

我可以使用下面的代码是否是存在不:

Counting the "string" occurrence in a file 
def count_string_occurrence(): 
    string = "2-native" 
    f = open("search.txt") 
    contents = f.read() 
    f.close() 
    print "Number of '" + string + "' in file", contents.count("2-native") 

在我来说,我搜查,发现2-native关键字。 我想要打印2本机的状态值和Dynamic Mac Addr值。下面是引用

Name: 2-native 
    Dynamic MAC Addr: Derived 
    Default Network: Yes 
    State: progress 

一样,如果我搜索“的vNIC模板” 我想打印类型值和Fabric价值。

回答

3

我想你可以使用类似:

import re 
keyword = re.escape("2-native") 
result = re.findall(r"Name: {}.*?Addr: ([\w]+).*?State: (.*?)$".format(keyword), contents, re.IGNORECASE | re.DOTALL | re.MULTILINE) 
if result: 
    mac_addr = result[0][0] 
    state = result[0][1] 
    print(mac_addr, state) 
    # Derived progress 

Demo

+1

你是一个用正则表达式。很好的答案。 – Chris

+0

赞赏@Chris! –