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

Python是个大杀器,人人都应该拥有这件武器_第1张图片
TIM截图20181201172847.png

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

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

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

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

Python是个大杀器,人人都应该拥有这件武器_第2张图片
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的大杀器。愿你也拥有这件武器。

Python是个大杀器,人人都应该拥有这件武器_第3张图片
1668061fb661dcc5.jpg

你可能感兴趣的:(Python是个大杀器,人人都应该拥有这件武器)