Python - 从文件中的行中剥离时间戳和用户名

Posted

技术标签:

【中文标题】Python - 从文件中的行中剥离时间戳和用户名【英文标题】:Python - Stripping timestamps and username from line in file 【发布时间】:2010-10-22 07:46:57 【问题描述】:

我正在编写一个脚本,它将文件中的随机文本行打印到 XCHAT 通道中。到目前为止它工作正常,但我想添加最后一点功能。

我有日志,例如,“Oct 23 12:07:59 (nickname>”出现在每一行文本之前。我只想打印“(nickname>”之后的行的部分,如何我可以这样做吗?

__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")

【问题讨论】:

【参考方案1】:

如果第一个>字符正是要拆分的地方,那么试试:

toBeIgnored, toBeUsed = line.split('>', 1)

【讨论】:

【参考方案2】:

我认为>可以作为分隔符,所以:

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

将行分成两部分,第一部分(下划线,虽然它不重要)与“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)

【讨论】:

我应该把它放在脚本的什么地方? 执行此操作时收到以下错误:文件 "D:\irc\xchat\scripts\ran.py", line 10 _, message = message.split('>', 1) ^ IndentationError: 意外缩进错误加载模块 D:\irc\xchat\scripts\ran.py 哦,我明白了。您不是原始代码的作者。在 Python 中,我们必须关心行的意图。检查您的代码是否带有空格或制表符。 ran() 方法中的所有行必须由相等数量的空格(例如 4 个空格)或制表符组成。在我的回答中,所有内容都是 4 个空格。【参考方案3】:

我会在 cmets 中询问,但我没有足够的代表。您的用户的昵称是否/可以包含“>”字符?如果没有,可以使用 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)

【讨论】:

我应该把它放在脚本的什么地方? 你可以在任何你想要的地方使用它,但是,因为从文件中读取发生在你可能想在那里返回它的 run(message) 函数中。我编辑了我的答案。 我收到了与使用发布的其他解决方案相同的错误:文件“D:\irc\xchat\scripts\ran.py”,第 10 行 _,message = message.split('> ', 1) ^ IndentationError: unexpected indent Error loading module D:\irc\xchat\scripts\ran.py 它说你有缩进错误,检查那行,使用空格而不是制表符。

以上是关于Python - 从文件中的行中剥离时间戳和用户名的主要内容,如果未能解决你的问题,请参考以下文章

Python - 如何将 python36 命令行中的行保存到 .py 文件中?

从文件中的行中去掉尾随空格

Python - 如何将python36命令行中的行保存到.py文件中?

如何使用 Pandas 计算跨多列的行中的值?

如何从具有由“|”分隔的字段的行中提取数据C++中的字符?

如何从python中找到.csv文件中特定单元格的平均值?