正则表达式中的名称错误
我正在尝试用正则表达式解析一个文件的内容,代码如下。如果我在'IF'语句内部打印系统名称,它是可以正常工作的。但是如果我在外面尝试打印,就会出现名称错误。希望能得到一些帮助。
#!/usr/bin/python
import re
f=open("cdp-nei1.txt")
f=f.readlines()
for data in f:
cdp_line = data.split("\n")
for line in cdp_line:
if "System Name" in line:
systemname = re.search(r"System Name:(.+)",line)
systemname = systemname.group(1)
print systemname
./show-cdp.py
Router1
#!/usr/bin/python
import re
f=open("cdp-nei1.txt")
f=f.readlines()
for data in f:
cdp_line = data.split("\n")
for line in cdp_line:
if "System Name" in line:
systemname = re.search(r"System Name:(.+)",line)
systemname = systemname.group(1)
print systemname
***
./show-cdp.py
Traceback (most recent call last):
File "./show-cdp.py", line 12, in <module>
print systemname
NameError: name 'systemname' is not defined
文件内容(为了简洁只显示一个部分)
Device ID:Router1
System Name: Router1
Interface address(es):
IPv4 Address: 10.0.0.1
Platform: N5K-C5672UP, Capabilities: Router Switch IGMP Filtering Supports-STP-Dispute
Interface: mgmt0, Port ID (outgoing port): Ethernet101/1/47
Holdtime: 179 sec
Version:
Cisco Nexus Operating System (NX-OS) Software, Version 7.0(1)N1(1)
Advertisement Version: 2
Native VLAN: 1
Duplex: full
MTU: 1500
Physical Location: Somewhere,United States
Mgmt address(es):
IPv4 Address: 10.0.0.1
1 个回答
0
如果你的第一行没有写“系统名称”,那么系统名称这个变量就没有被定义,因为你没有进入那个条件判断的代码块。但是在条件判断之后,你还是想要打印这个变量……结果它还没有被定义,所以就出现了错误。