Python实战:扫描key完整性

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