python - 根据文本文件中字符串“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"
解决方案
您可以读取文件的当前内容,然后如果字符是退格删除最后一个字符,否则将新字符附加到现有字符串并写入文件。不确定您为什么要制作键盘记录器。
推荐阅读
- amazon-web-services - 获取 EC2 Windows Server 中文件的可下载链接
- vb6 - 名称与现有模块、项目或对象库冲突
- python - Python - 具有多个重复标签的 xml 提取
- c++ - 有没有办法从另一个应用程序的控制台获取文本?
- java -
> 如果没有 @Provides-annotated 方法,则无法提供 - r - R中的多参数梯度下降
- python - 使用正则表达式模式解析 URL 列表
- jenkins - 使用基于角色的策略时如何限制特定的詹金斯工作
- android - 下载管理器更新应用程序,但失败
- c# - 如何保存对象变量供 ASP.NET 应用程序的所有用户使用,该变量被触发一次