04-12 周五 基于VS Code + Python 实现单词的自动提取

2024-04-13 02:28

本文主要是介绍04-12 周五 基于VS Code + Python 实现单词的自动提取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

04-12 周五 基于VS Code + Python 实现单词的自动提取
时间版本修改人描述
2024年4月12日21:30:56V0.1宋全恒新建文档
2024年4月12日22:29:26V1.0宋全恒完成撰写

简介

 在之前的文章中,我们 03-11 周一 zotero文献阅读时生词提取步骤这个文章中,我们详细的介绍了我们通过如下的流程将阅读文献时的生词摘录出来,专门进行专项日常生词积累。

[外链图片转存中…(img-F4e7x8Ek-1712933099672)]

 那么该如何进行呢?我们怎么才能将枯燥的切换转换为程序的执行呢?这便是这个文章要记录的内容管理。

前提

 要达到当前的要实现的效果,需要使用如下的工具:

  • VS Code
  • Python开发环境

 使用Python开发环境,是因为楼主最近两年一直使用这个语言来开发项目,所以相对熟悉一点。

本质就是将枯燥的手动查找替换输入正则匹配转换为程序执行

配置过程

如下的配置均在VSCode环境中进行,相当于只需要vscode,然后执行一个动作就完成替换即可。

配置任务

 这一步的本质是相当于配置一个执行文本处理的入口,我们可以使用快捷键Ctrl + Shift + P,

[外链图片转存中…(img-zmMyDhtR-1712933099675)]

 然后在task.json我们撰写如下的内容:

{"version": "2.0.0","tasks": [{"label": "word extractor","type": "shell","command": "python","args": ["D:\\400-工作\\420-资源\\423-script\\word_extractor.py", "${file}"],"problemMatcher": [],"group": {"kind": "build","isDefault": true}}]
}

 在上面,我们指定了command为python,所以需要实现在windows机器上安装Python3,然后关键是args,是要执行的过程,另外我们要指定这个参数,即处理的当前文件

我们将word_extrctor.py封装了单词提取的完整的流程,然后我们取名word extractor,这就是vscode的插件强大之处,很灵活的可以扩展。只要我们熟悉Python,熟悉正则表达式,我们基本上可以做各种各样的处理。

撰写脚本

 我们按照想要的流程处理当前文件。

注: "${file}"是必须要有的,标记待处理的文件路径

 下面我们看一下这个word_extractor.py的基本逻辑:

# -*- coding: utf-8 -*-import re
import os
import sys# print("文件路径: ", sys.argv[1])
# 确保文件路径正确
file_path = sys.argv[1]
# print(file_path.split("\\"))# paths = file_path.split("\\")
# file_path=os.path.join(paths[0], "/".join(paths[1:]))
# 读取文件内容
with open(file_path, 'r', encoding='utf-8') as file:content = file.read()# “implications” ([Zhu 等, 2023, p. 1](zotero://select/library/items/J3S5Q2PY)) ([pdf](zotero://open-pdf/library/items/FTR3LHEG?page=1&annotation=GWMLFT4K)) implications  处理成implications
new_content = re.sub( r'“(\w+)”.*\n', r'\1\n', content)lines = new_content.split("\n")# 匹配中文
pattern = r'[\u4e00-\u9fff]+'# 使用列表推导式和re.sub函数删除包含中文字符的行
new_lines = [re.sub(pattern, '', line) for line in lines if not re.search(pattern, line)]# 使用列表推导式移除空行,一个非空行定义为至少包含一个非空格字符
new_lines = [line for line in new_lines if line.strip()]# 将单词排序,并获取排序后的单词列表
new_lines.sort()
new_content="\n".join(new_lines)# 将新内容写回文件
with open(file_path, 'w', encoding='utf-8') as file:file.write(new_content)print(f"Replaced Markdown images with HTML in {file_path}")

 上述的代码逻辑基本上就是读取文件,逐行处理每一行内容。首先是处理单词的提取,然后使用正则表达式替换有中文的内容,然后进行了一次排序。

 这样就大功告成了,我们就将正则查找替换的命令固定成了一个函数了,这也就是程序开发的魅力所在,移除所有的枯燥,让世界美丽起来。

使用

 我们首先在zotero完成一篇文献的阅读,然后将标记为红色的生词全部提取出来。然后复制到txt文件中,然后,我们使用Ctrl + Shift + P,然后点击task: run,然后点击word extractor,即可以完成单词的提取。

然后我们登录不背单词,就可以完成自制词书的导入了。这个过程之前在文档中有记录,不再赘述。

总结

 最近状态还好吧,人还是要自律,最近自己对自己的手机使用屏幕时间限制,限制之后,再也不用担心因为手机放纵,看电子书,或者看短视频了,每天清净心不少。人真的是,不能收欲望的胁迫,然后为什么要不断地使用外在的刺激来获取快感呢,短视频是这样,电子书是这样,都是挺假的,只有生活才是真实的,所以大家还是要努力的认真的生活。

脚踏实地踏踏实实的去工作,去生活,去运动,去拥抱美好的生活!慢慢的,我发现自己的工作越来做好,人际关系越来越融洽,生活越来越充实,身体越来越健康!

这篇关于04-12 周五 基于VS Code + Python 实现单词的自动提取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/898898

相关文章

React 记忆缓存的三种方法实现

《React记忆缓存的三种方法实现》本文主要介绍了React记忆缓存的三种方法实现,包含React.memo、useMemo、useCallback,用于避免不必要的组件重渲染和计算,感兴趣的可以... 目录1. React.memo2. useMemo3. useCallback使用场景与注意事项在 Re

python中getsizeof和asizeof的区别小结

《python中getsizeof和asizeof的区别小结》本文详细的介绍了getsizeof和asizeof的区别,这两个函数都用于获取对象的内存占用大小,它们来自不同的库,下面就来详细的介绍一下... 目录sys.getsizeof (python 内置)pympler.asizeof.asizeof

Nginx实现端口映射的示例代码

《Nginx实现端口映射的示例代码》本文主要介绍了Nginx实现端口映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 找到nginx的部署路径2. 备份原来的配置文件3. 编辑nginx.conf文件4. 在

Java StringBuilder 实现原理全攻略

《JavaStringBuilder实现原理全攻略》StringBuilder是Java提供的可变字符序列类,位于java.lang包中,专门用于高效处理字符串的拼接和修改操作,本文给大家介绍Ja... 目录一、StringBuilder 基本概述核心特性二、StringBuilder 核心实现2.1 内部

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv