由txt文件识别输出源代码文件

项目需求

由于代码质量检测需要输入源代码文件,故要将提取出来的txt为你教案转化为如a.cpp, b.java的源代码文件。

解决方法

考虑使用fuzzywuzzy库对txt文件的字符进行模糊查询,判断代码的类型。
由于需求不太高,这里的处理比较简单:
列出一组数据,将txt文档的头与之比对,用fuzzywuzzy得到相似度;
相似度最高的就认为是该种类型的代码,生成源代码文件。

# 判断txt中的代码类型
def txt_to_code(in_path, out_path):
    # 结合图片识别使用(文本识别已经可以生成源代码文件)
    # 由于一小块代码意义不大,这里暂时考虑完整的代码
    with open(in_path, encoding="utf-8") as file:
        alltext = file.read()
        print(alltext)

        # 指针回到开头
        file.seek(0)

        # 读文本的前10个字符并打印出来
        head = file.read(10)
        print(head)

        # 部分匹配,如果S1是S2的子串依然返回100
        # 没有区分c和c++
        same_degree = []

        same_degree.append(fuzz.partial_ratio(head, '#include <iostream>'))
        same_degree.append(fuzz.partial_ratio(head, 'using namespace std;'))
        same_degree.append(fuzz.partial_ratio(head, 'package'))
        same_degree.append(fuzz.partial_ratio(head, 'public static void main'))
        same_degree.append(fuzz.partial_ratio(head, 'public void'))
        same_degree.append(fuzz.partial_ratio(head, 'int main()'))
        same_degree.append(fuzz.partial_ratio(head, 'def'))

        max_data = max(same_degree)
        max_index = same_degree.index(max(same_degree))+1

        tail = ''
        if max_index in range(1,3):
            tail = 'cpp'
        if max_index in range(3, 6):
            tail = 'java'
        if max_index in range(6, 8):
            tail = 'python'

        out_path = in_path[:-3]+tail

        with open(out_path, 'w', encoding='utf-8') as f:
            f.write(alltext)
        f.close()
    file.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值