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实战:扫描key完整性的更多相关文章
- 再一波Python实战项目列表
前言: 近几年Python可谓是大热啊,很多人都纷纷投入Python的学习中,以前我们实验楼总结过多篇Python实战项目列表,不但有用还有趣,最主要的是咱们实验楼不但有详细的开发教程,更有在线开发环 ...
- python实战博客
2018-10-31 更新Logging日志记录以及异常捕获 感谢廖大教程.Python实战 直接在闲置的服务器上开发.阿里云Centos 6.8 64位. 1 搭建开发环境 Python 环境是Py ...
- python实战提升--1
#python实战提升 1. 如何在列表.字典.集合中根据条件筛选数据? python中for _ in range(10)与for i in range(10)有何区别 下划线表示 临时变量, 仅用 ...
- 自然语言处理之中文分词器-jieba分词器详解及python实战
(转https://blog.csdn.net/gzmfxy/article/details/78994396) 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自 ...
- zeromq 学习和python实战
参考文档: 官网 http://zeromq.org/ http://www.cnblogs.com/rainbowzc/p/3357594.html 原理解读 zeromq只是一层针对socke ...
- Python实战:美女图片下载器,海量图片任你下载
Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...
- Python实战:Python爬虫学习教程,获取电影排行榜
Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...
- python实战--数据结构二叉树
此文将讲述如何用python实战解决二叉树实验 前面已经讲述了python语言的基本用法,现在让我们实战一下具体明确python的用法 点击我进入python速成笔记 先看一下最终效果图: 首先我们要 ...
- python实战:用70行代码写了一个山炮计算器!
python实战训练:用70行代码写了个山炮计算器! 好了...好了...各位因为我是三年级而发牢骚的各位伙伴们,我第一次为大家插播了python的基础实战训练.这个,我是想给,那些python基础一 ...
随机推荐
- I() 方法
I()方法的介绍及使用: http://www.jb51.net/article/51213.htm
- bash 语法使用
1.定义函数时,不需要使用function作为函数的命名. 函数不需要形参. 函数名不能以数字作为开头 main() { in ) 1_start ;; ) 1_start 5_start ;; ) ...
- JS实现图片预加载无需等待
网站开发时经常需要在某个页面需要实现对大量图片的浏览;用javascript来实现一个图片浏览器,让用户无需等待过长的时间就能看到其他图片 网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考 ...
- 【HNOI2008】Cards BZOJ 1004
Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目 前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张 ...
- springMVC和spring各自扫描自己的注解不要相互混淆
1.问题 执行 entityManager.flush(); 总是报错:javax.persistence.TransactionRequiredException: no transaction ...
- CFileDialog(文件夹对话框类)和CFontDialog(字体设置对话框类)的使用学习
CFileDialog(文件夹对话框类) 主要用于文件的保存,另存,打开,关闭等功能 功能“另存为”的实现: void CTXTDlg::OnFileSaveas() { LPCTSTR szFilt ...
- android系统中自带的一些ThemeStyle
1 android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen" 布局页面最上面 不会显示 and ...
- 基于类的命令行notebook的实现
在看一本书<PYTHON3 面向对象编程> 内容丰富,作作记录. notebook.py __author__ = 'chengang882' import datetime # Stor ...
- Android 笔记 day4
单元测试
- [数学]内接多边形求pi