我有一个问题,我想读取一个文件,搜索任何有会话ID(e.i。12345)的行,如果匹配则打印所有行,直到遇到换行符。 之后,如果我需要进一步解析这些行,如何将所有这些行关联到会话ID。 我想用Python做到这一点。
由于
答案 0 :(得分:3)
这回答了你问题的第一部分:
with open('myfile.txt') as f:
for line in f:
if '12456' in line:
print line
我不明白你还要求什么。你能翻译:“如果我需要进一步解析这些行,我如何将所有这些行与会话ID相关联?”
答案 1 :(得分:2)
我将假设您的日志文件格式为
session 321: abc de
567 89 abd ec
session 12345: ghi lm
763 98 dba ce
你想要做的是找到适当的会话和所有后续行,直到你看到一个空行。
import collections
import re
sessionData = collections.defaultdict(list)
lookfor = [12345, 13981]
newSession = re.compile(r'session (\d+):')
with open('my_log_file.txt', 'r') as inf:
session = None
for ln in inf:
ln = ln.rstrip()
if len(ln):
match = newSession.match(ln)
if match:
s = int(match.group(0))
if s in lookfor:
session = s
if session:
print ln
sessionData[session].append(ln)
else:
session = None
sessionData现在是一个会话密钥字典;对于每个会话,它包含所有相关行的列表。使用上面的示例数据,sessionData看起来像
{ 12345: ["session 12345: ghi lm", " 763 98 dba ce"] }