美文网首页
Python是个大杀器,人人都应该拥有这件武器

Python是个大杀器,人人都应该拥有这件武器

作者: wsb200514 | 来源:发表于2018-12-01 17:30 被阅读16次
    TIM截图20181201172847.png

    1、最近在使用nopCommerce,它是一个基于C#写的电商框架,说是框架其实不准确,它近乎是一套完整的电商平台源码,可以直接部署使用。只是因为它是国外的软件,所以在汉化以及微信支付宝支付支持上,需要安装额外的插件。

    2、nopCommerce的汉化操作不复杂,每种语言对应一个xml文件,你选择多种语言的话,那顺便上传一下该种语言对应的xml文件即可,xml里面就是keyvalue的值。可问题是如果你使用最新的4.10版本的话,你几乎找不到相应的汉化文件,最后只能找一个旧版的,然后查找补充缺的那些汉化字段。

    3、问题是字段大概有6000多个。一个个比较看看哪个字段是英文里有而中文里没有的,然后添加这个字段相应的中文值,就这样一条条记录的增加,光是这么想一下,就不寒而栗。这个时候就是使用各种小工具的时候了。

    4、先把所有数据导到Excel中,然后根据字段名字排序,一般而言,如果中英文都有的话,应该是下面这样两两一组排列在一起的:

    image

    如果只有中文(该字段旧版本有但新版本已删除)或者只有英文(该字段为新版本新增)的话,会像下面这样:

    image

    5、接下来就是Python出场的时候了。处理Excel主要用到xlrdxlwt这两个包,很好记忆,可以看做是ExcelReadExcelWrite的缩写。读取的主要任务是读取哪个open_workbook(file_name),这个文件的哪个薄sheet_by_name(sheet_name),哪一行row(row_no),哪一列col(col_no),哪一个单元格cell(row_no,col_no),那么要循环处理的话,得知道一共有多少行.nrows或者多少列.ncols。写入的API相对简单一些,主要是创建一个空的Excel对象xlwt.Workbook(),给这个文件增加薄add_sheet(sheet_name),写入数据write(row_no,col_no,value),最后保存到哪个文件save(file_name)。下面是简写的一个样例:

    
    import xlrdimport xlwt
    
    data_source_file_name = "LocaleStringResource.xlsx"
    data_source_sheet_name = "LocaleStringResource"
    target_source_file_name = "20181015-LocaleStringResource.xls"
    target_source_sheet_name = "Sheet1"
    
    data_source = xlrd.open_workbook(data_source_file_name)
    table_source = data_source.sheet_by_name(data_source_sheet_name)
    data_target = xlwt.Workbook()
    table_target = data_target.add_sheet(target_source_sheet_name)
    
    nrows_source = table_source.nrows
    
    recored_id = ""
    record_language_id = ""
    record_resource_name = ""
    record_resource_value = ""
    source_row_no = 1target_row_no = 0
    
    while source_row_no < nrows_source:
        recored_id = table_source.row(source_row_no)[0].value
        record_language_id = table_source.row(source_row_no)[1].value
        record_resource_name = table_source.row(source_row_no)[2].value
        record_resource_value = table_source.row(source_row_no)[3].value
    
        if nrows_source - source_row_no == 1:
            table_target.write(target_row_no,0,recored_id)
            table_target.write(target_row_no,1,record_language_id)
            table_target.write(target_row_no,2,record_resource_name)
            table_target.write(target_row_no,3,record_resource_value)
            break
    
        c_record_resource_name = table_source.row(source_row_no+1)[2].value 
    
        if record_resource_name == c_record_resource_name:
            if nrows_source - source_row_no == 2:
                break
            source_row_no = source_row_no + 2
        else:
            table_target.write(target_row_no,0,recored_id)
            table_target.write(target_row_no,1,record_language_id)
            table_target.write(target_row_no,2,record_resource_name)
            table_target.write(target_row_no,3,record_resource_value)
            target_row_no = target_row_no + 1
    
        source_row_no = source_row_no + 1data_target.save(target_source_file_name)
    

    6、安装好Python环境和相应的包之后,新建一个比如叫xxx.py的文件写上面的代码,然后在控制台直接python3 xxx.py就会生成一个我们需要的新的Excel文件。强大的第三方包+简单方便快捷一直是Python的大杀器。愿你也拥有这件武器。

    1668061fb661dcc5.jpg

    相关文章

      网友评论

          本文标题:Python是个大杀器,人人都应该拥有这件武器

          本文链接:https://www.haomeiwen.com/subject/posrcqtx.html