码迷,mamicode.com
首页 > 编程语言 > 详细

Python实战:扫描key完整性

时间:2015-02-10 18:11:38      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

之前在国际版本中,需要支持中英文切换功能,在如此繁多的源文件里要查找源文件里的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,处理源文件也一样的原理

Python实战:扫描key完整性

标签:

原文地址:http://www.cnblogs.com/cool-fire/p/4284324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!