当前位置: 首页 > article >正文

两个yaml转成的 excel对比

语言本地化过程中 ,yaml转成excel格式给翻译人员使用,翻译好之后再转换成yaml格式给游戏使用。但是在翻译人员编辑时是不可控的,有可能造成某种想不到的问题。因此,需要将翻译人员的excel转成yaml ,再将yaml转成excel和翻译人员的excel进行对比,看看有没有疏漏。对比的主要内容是键-值对比,python代码如下

 #coding=utf-8
__author__ = 'qzyn2320'

import sys
import yaml
import codecs

from yaml.constructor import Constructor

def add_bool(self, node):
    return self.construct_scalar(node)

Constructor.add_constructor(u'tag:yaml.org,2002:bool', add_bool)

reload(sys)
sys.setdefaultencoding('utf-8')
# excel文件读出存为dict
def ExackFromExcel(filename):
    import xlrd
    wb = xlrd.open_workbook(filename)
    sh = wb.sheet_by_index(0)
    excelDict = {}
    for line in xrange(1, sh.nrows):
        key = sh.cell_value(line, 0)
        value = sh.cell_value(line, 1)
        excelDict[key] = value
    return excelDict
#将对比两个dict
def CompareDict(baseDict, cmpDict):
    baseKeys = list(baseDict.keys())
    cnt = 0
    for key in baseKeys:
        if(cmpDict.has_key(key)):
            cnt += 1
            #打印键键相同,值不同的字典元素,打印后删除该键
            if(not (baseDict[key] == cmpDict[key])):
                print "value differ,key =  ", key, ",  value1 = " , baseDict[key], ", value2 = " ,cmpDict[key]
            del baseDict[key]
            del cmpDict[key]
    print "samekey num:", cnt
    #打印两个互不包含的键和值
    print "base extra :",baseDict
    print "cmp extra :", cmpDict
if __name__=="__main__":
    if len(sys.argv) < 3:
        sys.exit();
    basedict = ExackFromExcel(sys.argv[1])
    cmpdict = ExackFromExcel(sys.argv[2])
    CompareDict(basedict, cmpdict)
    sys.exit();


http://www.kler.cn/news/365242.html

相关文章:

  • oracle数据库---PL/SQL、存储函数、存储过程、触发器、定时器job、备份
  • 【Flutter】页面布局:线性布局(Row 和 Column)
  • Vue入门示例
  • 33 类与对象 · 下
  • Element UI
  • 股票与基金资料收集
  • Redis3
  • 【C】数组(array)
  • PHP PDO:安全、灵活的数据持久层解决方案
  • 【ios】---SwiftUI开发从入门到放弃
  • 每日一题——第一百一十八题
  • TCP控制位|标志位
  • 走廊泼水节——求维持最小生成树的完全图的最小边权和
  • HUAWEI_HCIA_实验指南_Lib3.2_配置Trunk接口
  • Spring Boot整合Stripe订阅支付指南
  • 线程池——Java
  • OCR提取影印版PDF文档的中日英三种文字
  • VUE中文本域默认展示最底部内容
  • C++20中头文件ranges的使用
  • 10.25学习
  • opencv 图像翻转- python 实现
  • 网站建设中需要注意哪些安全问题?----雷池社区版
  • 凯伦股份荣获中国钢结构协会2024年度技术创新奖
  • CentOS7上下载安装 Docker Compose
  • springboot社区网格管理系统-计算机毕业设计源码90901
  • MySQL同步到ES的方案选型