Как убрать лишнее?
У меня есть скрипт
import os
import time
def follow(thefile):
thefile.seek(0, 2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
if __name__ == "__main__":
logfile = open(os.getenv("APPDATA") + "/.minecraft/logs/latest.log", "r")
loglines = follow(logfile)
for line in loglines:
if "[CHAT] Serverexe" in line:
print(line.strip("\n"))
котоырй отслеживает логи майна и выводит в консоль сообщение от определённого игрока, так вот, когда этот игрок написал сообщение, скрипт его нашёл и вывел, то выводит он его так
[19:20:04] [Client thread/INFO]: [CHAT] Serverexe: oooooooooops
[19:20:07] [Client thread/INFO]: [CHAT] Serverexe: sorry
[19:20:15] [Client thread/INFO]: [CHAT] Serverexe: bro?
тут много лишнего, как мне убрать это и оставить только вот это
Serverexe: oooooooooops
Serverexe: sorry
Serverexe: bro?
Ответы (2 шт):
Автор решения: GrAnd
→ Ссылка
Можно использовать метод partition() у строки:
>>> line = '[19:20:04] [Client thread/INFO]: [CHAT] Serverexe: oooooooooops'
>>> line.partition('[CHAT] ')[2]
'Serverexe: oooooooooops'
Или использовать срез:
>>> line[line.find('[CHAT] ')+7:]
'Serverexe: oooooooooops'
Автор решения: Alpensin
→ Ссылка
Хоть способ @GrAnd c partition лучше, т.к. быстрее, выложу своё решение с регуляркой, чтоб не пропадало
import os
import time
import re
def follow(thefile):
thefile.seek(0, 2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
if __name__ == "__main__":
pattern = '\[CHAT\] (Serverexe:.*)\n?'
logfile = open(os.getenv("APPDATA") + "/.minecraft/logs/latest.log", "r")
loglines = follow(logfile)
for line in loglines:
if "[CHAT] Serverexe" in line:
result = re.search(pattern, line)[1]
print(result)