我有一个以下文本文件 sample.txt :
xe-4/3/1.1596
xe-4/3/1.1528
ae2.670
xe-4/3/1.1503
ae2
xe-4/3/1.1478
xe-4/3/1.1475
xe-4/3/1.1469
xe-4/3/1
xe-4/3/1.3465
xe-4/0/0.670
xe-4/0/0
xe-4/3/1.1446
xe-4/0/0.544
xe-4/3/1.1437
gr-5/0/0
gr-5/0/0.10
lo0.16384
lo0.16385
em1
em1.0
cbp0
demux0
irb
pip0
pp0
ae0
这是路由器的接口列表。 我需要打印出包含以下内容的行(接口): xe,ae,gr 但是那些不包含点的行,例如 xe-4/3/1 , gr-5/0/0 , ae2 等。
尝试以下代码但不起作用:
import re
file = open('sample.txt','r')
string = file.read()
for f in string:
matchObj = re.findall("(xe|ae|gr)[^.]*$", f)
if matchObj:
print f
在http://regexr.com/检查了我的正则表达式(xe | ae | gr)[^。] * $ ,它与我想要的行匹配。你能告诉我我做错了吗?
答案 0 :(得分:2)
for f in string:
将迭代文件中的字符;你想迭代线。我建议使用以下代码:
# use the with statement to open the file
with open('sample.txt') as file:
for line in file:
# use re.search to see if there is match on the line;
# but we do not care about the actual matching strings
if re.search("(xe|ae|gr)[^.]*$", line):
print line