分享一个能对java代码进行“tokenize”的python库
分享一个能对java代码进行“tokenize”的python库
个人博客:记录一下在项目实施过程中的一些点
情景回顾
项目遇到需求,需要将Java代码进行“tokenize”,即“令牌化”。所谓令牌化,就是指,将java代码,转化为一个由令牌组成的序列。而其中的“令牌”,其实就是一个个的“词”和代码中的“符号”。
举个例子,有代码如下:
package effectivejava.chapter2.item8;public class Adult {public static void main(String[] args) {try (Room myRoom = new Room(7)) {System.out.println("Goodbye");}}
}
我需要将上面的代码令牌化,期待得到如下结果:
['package', 'effectivejava', '.', 'chapter2', '.', 'item8', ';', 'public', 'class', 'Adult', '{', 'public', 'static', 'void', 'main', '(', 'String', '[', ']', 'args', ')', '{', 'try', '(', 'Room', 'myRoom', '=', 'new', 'Room', '(', '7', ')', ')', '{', 'System', '.', 'out', '.', 'println', '(', '"Goodbye"', ')', ';', '}', '}', '}']
将Java代码转化为词序列,然后给每个词赋予编号,用编号替代相应的词,即可以完成对Java代码的一种简单的编码。后续在输入神经网络中会方便很多。
推荐工具
我使用的工具为:javalang库(https://github.com/c2nes/javalang)
使用这个工具能很快速地完成上述转换,一个简单demo为:
import javalangtokens = javalang.tokenizer.tokenize("""package effectivejava.chapter2.item8;public class Adult {public static void main(String[] args) {try (Room myRoom = new Room(7)) {System.out.println("Goodbye");}}}"""
)final_token_list = []for token in tokens:final_token_list.append(str(token.value))print final_token_list
对我来说,这个库的好处在于:
- 它是使用Python语言来解析Java代码,所以对于用户很友好(Python编写比Java简单)
- 它可以对代码片段进行解析。因为在我的项目中,数据全是一些Java代码片段,使用javalang来解析也十分方便
一些资源
javalang官方Github:https://github.com/c2nes/javalang
分享一个能对java代码进行“tokenize”的python库相关推荐
- Java培训分享5个常用Java代码混淆器
对于Java程序员来说,如果辛辛苦苦写的代码被人摽窃走,将是一件非常恼火的事情.如何保护自己的代码呢,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD,尽可能给反编译人员制 ...
- 分享一个爱心的特效代码
给大家分享一个用html+js写的爱心特效代码,打开你的dw或者vscode编辑器,将代码丢进去运行就行,小白请参考第二点 目录 一.有代码基础的同学看这儿 效果: 源码: 有些新入门的铁子可能不知道 ...
- java代码调用python_Java调用Python
常见的java调用python脚本方式有两种,下面给大家介绍一下: 通过Jython.jar提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 这两种方法我都尝试过,个 ...
- append一个option会多出一个空的_Collections | 你必须会的Python库
后台回复1024,解锁无限快乐! 来源: 南枝向暖北枝寒MA https://blog.csdn.net/mall_lucy/article/details/108822795 什么是collecti ...
- 分享一个宝藏级 Java 插件
最近在学习伯克利 CS 61b 公开课时候,发现了一个 Java 插件 Java Visualizer,主要用于观察程序执行时的变量和方法的变化情况,可以在Debug 模式下一步一步的观察到程序变化的 ...
- 今天给大家分享一个HTML5的钢琴代码,可以弹奏的哦!(附完整源码)
它是一个可以弹奏的钢琴,所以它需要音频文件,在这里发不了,这里只有代码,音频文件的分享在文章末尾哦. <!doctype html> <html lang="en" ...
- 一个类的java代码_求一段java代码,定义一个类
你看看这样行不行:public class Test{ private String str; public Test(){} public Test(String str){ this.str = ...
- java代码调用python_java调用python代码-阿里云开发者社区
同样的我们需要安装jython,具体的步骤如下: 2. 下载下来的jar包其实既是使用的时候需要引入的jar包,也是安装就jython的jar包.具体安装细节参照:https://wiki.pytho ...
- python项目软件代码_七套Python库快速提升您项目的代码可维护性,软件工程,代码库...
保护项目未来可维护性的一种理想方式,在于利用外部库检查您的代码运行状况.以下是目前开发人员最喜爱的的代码梳理库,它们能够以强制方式执行一致性样式,并确保项目在成熟之后仍具备可接受的测试覆盖率. 当软件 ...
- java源文件编译成jar_从源文件和JAR文件构建Java代码模型
java源文件编译成jar 最近,我花了一些时间来研究有效java ,该方法正在GitHub上达到300星(可以免费帮助实现目标:D). Effectivejava是在您的Java代码上运行查询的工具 ...
最新文章
- Python制作植物大战僵尸小游戏
- Git 通过源码编译安装 2.12.2 遇到的问题及解决
- 最优化课堂笔记08——非线性规划中的一些其他方法(考试你懂得)
- 最近公共祖先_[LeetCode] 236. 二叉树的最近公共祖先
- Linux版本tomcat下载及安装
- 简单两个矩阵如何用计算机运算,教你使用excel做矩阵运算
- Hexo博客美化之蝴蝶(butterfly)主题魔改
- 电影O2O烧钱大战,百度成收割者?
- LoadRunner函数大全
- 跨品种套利 (期货)
- 位图(bitset)的使用【STL】
- CB Insights:全面拆解谷歌AI战略布局
- 谷歌浏览器在线观看视频有声音但画面黑屏问题解决
- 创业起步阶段需要注意的几点
- idea java 语法高亮_Intellij IDEA 中JAVA常用配置项总结
- OpenNI 1.3.2.1发布
- 百度云服务器远程密码忘记,2020-11-17 新买了百度云服务器,如何用ssh远程登陆...
- 雨巷-----美丽的忧伤
- 1办公自动化之批量提取文件名视频教程
- Python实现的《芳华》WordCloud词云+LDA主题模型
热门文章
- [ZGC升级记录](to-space exhausted/Evacuation Failure)
- python中的 zip函数详解
- 解析京东大数据下高效图像特征提取方案
- 论文笔记 - Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks
- 「牛市」的危险和川普的口罩|极客一周
- 益企工程云:成长型建筑企业专属的工程项目管理软件
- Trivial、Non-Trivial和POD类型
- 基于BP神经网络的车牌识别问题研究附Matlab代码
- meta http-equiv=refresh content=0; url=是什么意思
- 使用wandb报错:ERROR Error while calling WB API: project not found (<Response [404]>)