【问题标题】:Python - Stripping timestamps and username from line in filePython - 从文件中的行中剥离时间戳和用户名
【发布时间】: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")

【问题讨论】:

    标签: python string irc text-files


    【解决方案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
      • 它说你有缩进错误,检查那行,使用空格而不是制表符。
      猜你喜欢
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多