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 文件中?