python读取win32字符串资源文件并写入excel表格文件

需求:

项目开发中需要支持多种语言,需要将英文翻译成其他语言如 俄语、泰语等等,
就需要将项目中的英文字符串导入到excel表格中交给客户去翻译。
下面python代码是以win32编程中的字符串资源导入excel表格的示例


image.png

上面是用到的4个字符串资源rc文件
win32编程字符串资源文件内容的格式如下所示:
STRINGTABLE
BEGIN
IDS_STRING1 "iphone"
IDS_STRING2 "xiaomi"
IDS_STRING3 "Music"
IDS_STRING4 "movie"
IDS_STRING5 "picture"
END
由一系列的 IDS_STRING1 "iphone" 方式定义了项目中用到的所以字符串资源。

'''
将Win32编程字符串资源rc文件里定义的IDS字符串导入到Excel表格中,
方便将对应的字符串翻译成其他语言

Win32编程字符串资源rc文件里的内容格式如下:
STRINGTABLE
BEGIN
    IDS_STRING1      "iphone"
    IDS_STRING2      "xiaomi"
    IDS_STRING3      "Music"
    IDS_STRING4      "movie"
    IDS_STRING5      "picture"
END
'''
import sys
import re
import xlwt


# 获取执行Python脚本 命令行参数列表
def get_param_list():
    param_list = []
    for param in sys.argv:
        param_list.append(param)
    return param_list


# 创建Excel文件对象,并返回文件对象
def create_excel_workbook():
    excelworkbook = xlwt.Workbook(encoding='utf-8')
    return excelworkbook


# 保存Excel内容到resource.xls中
def save_excel_workbook(excelworkbook):
    excelworkbook.save('win32_resource_string.xls')


# 先读取IDS资源文件,然后用正则表达式匹配出含有字符串内容的有效数据,然后把匹配到的有效数据写入到Excel表格里面
# 参数1:创建的Excel表格文件对象
# 参数2:需要读取的“字符串资源rc文件”
def write_resource_data_to_excel(excelworkbook, sourcefilename):
    # 往Excel表格文件对象里添加 sheet 并取名为资源的文件名
    workexcelsheet = excelworkbook.add_sheet(sourcefilename)
    # 只读的方式打开资源文件
    sourcefile = open(sourcefilename, 'r')
    # readlines()读取整个文件每行的内容并返回一个列表
    sourcefileLinestr = sourcefile.readlines()

    line = 0  # 定义写入excel表格的行数

    for strline in sourcefileLinestr:
        # 编译正则表达式,生成一个正则表达式对象,用于匹配有效的字符串内容
        pattern = re.compile(r'IDS.*')
        strIDSValue = re.search(pattern, strline)  # 按正则表达式的规则匹配有效的内容

        if strIDSValue is None:
            pass
        else:
            strIDSLine = strIDSValue.group()  # 获取到匹配到的内容,例如:IDS_STRING1      "iphone"
            strIDSLineSplit = strIDSLine.split('"')  # 按 " 将字符串内容进行分割,并返回分割后的列表
            workexcelsheet.write(line, 0, label=strIDSLineSplit[0])  # 将分割字符串得到的列表内容写入到Excel表格中(行,列,写入的值)
            workexcelsheet.write(line, 1, label=strIDSLineSplit[1])  # 将分割字符串得到的列表内容写入到Excel表格中(行,列,写入的值)
            line = line + 1  # 写完一行,行数加 1


if __name__ == '__main__':
    # 获取命令行参数列表,列表第一个值是该python脚本的名称,其他参数是资源文件的名称
    param_list = get_param_list()
    param_list.pop(0)  # 去掉参数列表第一个值,得到真正的参数值列表,资源文件名
    print(param_list)

    excelworkbook = create_excel_workbook()  # 创建Excel文件对象,并返回文件对象

    for param in param_list:
        filename = param.split(".")  # 将资源文件的名称用 . 分割得到一个列表
        try:
            if filename[1] == 'rc':  # 如果资源文件名的后缀是 rc 表明输入参数正确
                print(param)
                write_resource_data_to_excel(excelworkbook, param)  # 读取资源文件,得到有效数据,并写入Excel表格
            else:
                print('the input param "{}" is not resource file !!!'.format(param))
        except:
            print('the input param "{}" is wrong or the resource file content format is wrong!!!'.format(param))

    save_excel_workbook(excelworkbook)  # 保存数据到Excel表格中

运行上述python程序:
启动Windows DOS 命令行执行该程序


image.png

或者写一个bat批处理脚本,执行双击运行该bat脚本即可


image.png

就可以得到我们想要的excel文件了(excelworkbook.save('win32_resource_string.xls'))
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容