Python - удаление временных меток и имени пользователя из строки в файле - PullRequest
1 голос
/ 22 октября 2010

Я пишу скрипт, который будет печатать произвольную строку текста из файла в канал XCHAT. Пока все работает нормально, но я хочу добавить еще одну функциональность.

У меня есть журналы, например, «23 октября 12:07:59 (псевдоним>») перед каждой строкой текста. Я просто хочу напечатать части строк, которые следуют за «(псевдоним>», как я могу это сделать?

__module_name__ = "ran.py"
__module_version__ = "1.0"
__module_description__ = "script to add random text to channel messages"

import xchat
import random

def ran(message):
    message = random.choice(open("E:/logs/myfile.log", "r").readlines())
    return(message)


def ran_cb(word, word_eol, userdata):
    message = ''
    message = ran(message)
    xchat.command("msg %s %s"%(xchat.get_info('channel'), message))
    return xchat.EAT_ALL


xchat.hook_command("ran", ran_cb, help="/ran to use")

Ответы [ 3 ]

1 голос
/ 22 октября 2010

Если первый символ > является именно тем местом, которое нужно разделить, попробуйте:

toBeIgnored, toBeUsed = line.split('>', 1)
0 голосов
/ 22 октября 2010

Я бы спросил в комментариях, но мне не хватает представителя.Содержит ли / может псевдонимы вашего пользователя символ ">"?Если нет, вы можете использовать команду split:

message = random.choice(open("E:/logs/myfile.log", "r").readlines())
text = message.split("> ", 1)[1]
return(text)

Или вы можете использовать одну строку:

message = random.choice(open("E:/logs/myfile.log", "r").readlines()).split("> ", 1)[1]
return(message)
0 голосов
/ 22 октября 2010

Я думаю, > может быть использовано в качестве разделителя, поэтому:

_, message = message.split('>', 1)

разделит строку на 2 части, первую часть (подчеркивание, хотя это не важно) с "Oct 23 12:07:59 (псевдоним "и второй с текстом после >

Вы можете использовать его в ran():

def ran(message):
    message = random.choice(open("E:/logs/myfile.log", "r").readlines())
    _, message = message.split('>', 1)
    return(message)
...