专栏首页andy的小窝python脚本提取flutter项目的中文字符生成表格文件

python脚本提取flutter项目的中文字符生成表格文件

思路: # 获取文件内连续的中文字符(筛选规则为冒号内的字符串如果出现\u4e00到\u9fa5字符串 提取冒号内容作为目标文本 (.*?)非贪婪模式)

用法:运行main.py,生成result excel文件。

library requirements

pip3 install xlwt

main.py

import os
import datetime
import re
import xlwt

class FileRead:
    def __init__(self):
        self.root_dir = r"C:\Users\Administrator\Desktop\flutter\your_project\lib"

    # 递归获取所有文件
    def find_file(self, dir_path):
        file_list = []
        if len(dir_path) == 0:
            path = os.path.join(self.root_dir, dir_path)
        else:
            path = dir_path
        temp_list = os.listdir(path)
        for file in temp_list:
            if os.path.isfile(os.path.join(path, file)):
                file_list.append(os.path.join(path, file))
            else:
                file_list.extend(self.find_file(os.path.join(path, file)))
        return file_list

    # 获取文件内连续的中文字符(不包括注释,筛选规则为冒号内的字符串如果出现\u4e00到\u9fa5 则提取冒号内容作为目标文本 (.*?)非贪婪模式)
    def find_chinese_in_file(self, file):
        file = open(file, mode='r', encoding='UTF-8')
        file_content = file.read()
        result = set( )
        # 正则匹配规则1 # 中文的编码范围是:\u4e00到\u9fa5
        patten = re.compile(r'\'([\u4e00-\u9fa5].*?)\'')
        result.update(patten.findall(file_content))
        # 正则匹配规则2
        patten = re.compile(r'"([\u4e00-\u9fa5].*?)"')
        result.update(patten.findall(file_content))
        # 清除空格
        for text in result.copy():
            if len(str.strip(text)) == 0:
                result.remove(text)
        file.close()
        return result


class ExeclHelper:
    def set_style(self, name, height, bold=False):
        style = xlwt.XFStyle() # 初始化样式
        font = xlwt.Font() # 为样式创建字体
        font.name = name # 'Times New Roman'
        font.bold = bold
        font.color_index = 4
        font.height = height
        style.font = font
        return style

    def write_execl(self, result):
        # 格式化输出
        f = xlwt.Workbook()
        # 创建sheet
        sheet1 = f.add_sheet(u'translate', cell_overwrite_ok=True)
        row0 = [u'chinese', u'english']
        # 生成第一行
        for i in range(0, len(row0)):
            sheet1.write(0, i, row0[i], self.set_style('Times New Roman', 220, True))
        # 填充数据
        for i in range(0, len(result)):
            sheet1.write(i+1, 0, result[i])
        # 设置宽度
        first_col = sheet1.col(0)
        first_col.width = 256*40
        second_col = sheet1.col(1)
        second_col.width = 256*40
        f.save("result.xls")


if __name__ == '__main__':
    print(datetime.datetime.now())
    file_read = FileRead()
    file_path_list = file_read.find_file("")
    # 找出所有中文字符
    result = []
    for file_path in file_path_list:
        result.extend(file_read.find_chinese_in_file(file_path))
    execl_helper = ExeclHelper()
    execl_helper.write_execl(result)
    print(datetime.datetime.now())

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一些Android util整理(唯一ID,加减乘除,清除缓存,Log工具类,Toast工具类)

    用户4458175
  • 在安卓5.0以上实现点击波纹效果(2)

    今天在做设置界面的时候发现一个快速实现水波纹效果的方法,在需要实现水波纹的控件加上

    用户4458175
  • 在安卓5.0以上实现点击波纹效果

    本文介绍的是Android5.0中其中一个炫酷的效果,点击水波纹扩散效果(Ripple Effect).

    用户4458175
  • python3批量为文件重命名

    为什么使用python批量重命名而没有使用shell,python对文字的处理更灵活,对于文件名中的空格不会出现报错。

    py3study
  • Python语言关于文件操作

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    张凝可
  • <Python脚本>批量转换less至css

    zhaoolee
  • Postman插件的应用与实战(二)

    在postman插件的应用与实战(一)中,介绍了postman插件的安装,使用,collestion的创建以及应用,本小节中,我们来介绍postman结合new...

    无涯WuYa
  • React 系列 - 写出优雅的路由

    自前端框架风靡以来,路由一词在前端的热度与日俱增,他是几乎所有前端框架的核心功能点。不同于后端,前端的路由往往需要表达更多的业务功能,例如与菜单耦合、与标题耦合...

    捷义
  • java IO流之二 使用IO流读取存储文件

    http://blog.csdn.net/a107494639/article/details/7586440

    bear_fish
  • python学习之异常处理的几种方式,附案例

    try: file =open(‘test.txt’,’w’,encoding=’utf-8′) res = file.read()#进行读操作,异常可能会...

    吾爱乐享

扫码关注云+社区

领取腾讯云代金券