【发布时间】:2014-10-20 22:56:06
【问题描述】:
我有一个这样的文本文件
PC Name : Sarah , IP : x.x.x.x
ID : AC:AC LP
PC Name : Moh, IP : x.x.x.x
ID : AC:AC LP
我想“从文件末尾向上搜索”以找到字符串“AC:AC LP”的第一个匹配项 然后我想复制上一行中的 ip 并将其添加到一个名为 ip 的新变量中
我搜索了代码,但它们都使用普通搜索并复制相同的字符串,请您帮忙
【问题讨论】:
我有一个这样的文本文件
PC Name : Sarah , IP : x.x.x.x
ID : AC:AC LP
PC Name : Moh, IP : x.x.x.x
ID : AC:AC LP
我想“从文件末尾向上搜索”以找到字符串“AC:AC LP”的第一个匹配项 然后我想复制上一行中的 ip 并将其添加到一个名为 ip 的新变量中
我搜索了代码,但它们都使用普通搜索并复制相同的字符串,请您帮忙
【问题讨论】:
with open(in_file) as f:
lines = reversed(f.readlines()) # start from end of file
for line in lines:
if "AC:AC LP" in line: # if AC:AC LP is in the line
print( next(lines).rsplit(":",1)[-1]) # go to next line, split, get ip and break the loop
break
在函数中:
def find_ip(in_file,sub_s):
with open(in_file) as f:
lines = reversed(f.readlines())
for line in lines:
if sub_s in line:
return next(lines).rsplit(":", 1)[-1]
如果ip不总是最后一个元素,使用re:
def find_ip(in_file,sub_s):
import re
with open(in_file) as f:
lines = reversed(f.readlines())
for line in lines:
if sub_s in line:
return re.findall(r"[0-9]+(?:\.[0-9]+){3}",next(lines))[0]
【讨论】: