首页 > 解决方案 > 根据文本文件中字符串“xyz”的外观删除传递给文本文件的最后一个字符输入

问题描述

所以我一直在搞乱 pynput 包,并注意到我可以用它创建一个临时的键盘记录器。我想通了,但现在我在将按键导出到 .txt 文件方面遇到其他问题。Python 2.7.15

我基本上想要做的是格式化击键输出以识别何时按下 key = "backspace" 以在按下退格键之前删除导出的字符。

from pynput.keyboard import Listener

def write_to_file(key):
    letter = str(key)
    # letter = letter.replace("u'","") not important
    # letter = letter.replace("'", "") not important

if letter == "Key.backspace":
    letter = " backspace "
    # delete the previous charater and move on with the logging

with open("log.txt", 'a') as f:
    f.write(letter)


with Listener(on_press = write_to_file) as lis:
    lis.join()

在键盘记录器运行时,它会将每次击键写入所述 log.txt 文件

例如:www.googlle_backspace__backspace.com

我在访问 google 时显然犯了写两个 l 的错误,我按了两次退格键,所以我在搜索栏中的输入是“www.googl”

现在我想在 log.txt 文件中对其进行格式化,以便它以某种方式识别字符串“退格”并删除“退格”之前的字符。

当前日志.txt

"www.googlle_backspace__backspace_e.com"

预期的 log.txt

"www.google.com"

我知道它一定与正则表达式或“re”有关,但我无法理解它。

我考虑过注册字符串“退格”并发送删除提示以删除 log.txt 中的最后一个字符,但我不知道该怎么做。

就像是:

if letter == "_backspace_":
    # delete string "_backspace_" and one character before it.

另一个例子:

日志.txt

"My name is Jeff, I am 22_backspace_3 years old"

预期日志.txt

"My My name is Jeff, I am 23 years old"

标签: pythonpython-2.7formattingkeyloggerpynput

解决方案


您可以读取文件的当前内容,然后如果字符是退格删除最后一个字符,否则将新字符附加到现有字符串并写入文件。不确定您为什么要制作键盘记录器。


推荐阅读