我有一個問題,我想要讀取文件,搜索任何具有會話ID(例如12345)的行,如果匹配,然後打印所有行,直到遇到換行符。 之後,我如何將所有這些行關聯到會話ID,如果我需要進一步解析這些行。 我想用Python做。如何解析文本
感謝
我有一個問題,我想要讀取文件,搜索任何具有會話ID(例如12345)的行,如果匹配,然後打印所有行,直到遇到換行符。 之後,我如何將所有這些行關聯到會話ID,如果我需要進一步解析這些行。 我想用Python做。如何解析文本
感謝
這個回答你的問題的第一部分:
with open('myfile.txt') as f:
for line in f:
if '12456' in line:
print line
我不明白你問別的什麼。你能翻譯:「如果我需要進一步解析這些行,我如何將所有這些行關聯到會話ID」?
我會假設你的日誌文件的格式如下
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"] }
`打印所有行之後,直到遇到換行符 - 看起來它將只有1行。請更具體。你的問題太籠統了。 – Elalfer 2011-01-29 02:24:24
這是非常簡單的寫作,但具體將由您的文件格式 - 這是什麼?另外,「打印所有行......直到遇到換行符」沒有意義,因爲所有行將以換行符結束。你究竟是什麼意思? – payne 2011-01-29 02:25:24
有點偏離主題,但你是如何得到這個用戶ID的。 「user589837」 – Neo 2011-01-29 02:41:47