之前在国际版本中,需要支持中英文切换功能,在如此繁多的源文件里要查找源文件里的key是语言资源包是否对应。
正好运用在之前学的python,写了个工具,支持自定义替换标签,批量处理源文件。现在看来,效果还是不错的,可以扫描出不匹配的key。
源文件连接:http://pan.baidu.com/s/1ntC78Zv
期间遇到的难题是这样的:
语言包中存在如下key-value对:"我是;key\"\,\‘" : "i am; key\"\,\‘"
之前用的正则表达式是这样:re.compile(‘"(.*?)"‘),这样只能匹配到"我是key\"。
解决方法有多种,我用的方法分为几步:
一、把整句的\.变以\,即变为:"我是;key\\\" : "i am; key\\\"
二、这时就可以用re.compile(‘"(.*?)"‘),获取到 我是;key\\\
三、再把第一步的替换回来,即变为:我是;key\"\,\‘
fd=open(jsonFilePath,‘r‘) data=fd.readline() while data: data=data.decode(‘utf-8‘) #print ‘raw data:‘+data #第一步,找到替换 p=re.compile(r‘(\\.)‘) keeper=p.findall(data) #print ‘keeper:%s‘%keeper data=p.sub(r‘\\‘,data) #print ‘first:‘+data #第二步,找到key p2=re.compile(r‘"(.*?)"‘) s=p2.search(data) if None!=s: data=s.group(1) else: data=fd.readline() continue #print ‘second:‘+data result=‘‘ #第三步,还原 for ke in keeper: target=data.find(‘\\‘) if target>=0: result=result+data[:target]+ke #print ‘----‘+result data=data[target+1:] #print ‘--------‘+data result=result+data
result就是最后的结果,这就成功获取到的正常的语言包key,处理源文件也一样的原理
时间: 2024-10-05 03:15:31