# -*- coding: utf-8 -*-
import os
import os.path
import re
import sys reload(sys)
sys.setdefaultencoding( "utf-8" ) root_path = os.getcwd()+ os.sep
list_name = ""
str_list = [] # full path
def check_file(file):
dic = os.path.splitext(file)
file_n = os.path.split(file)
if dic[1] == ".lua" and file_n[1] != "Language.lua":
return True
return False def is_file(path):
return os.path.isfile(path) def replace(match):
if re.search(u'[\u4e00-\u9fa5]+', match.group(0)) != None:
global list_name
if match.group(0) in str_list:
return "Util" + list_name+".str"+str(str_list.index(match.group(0)))
else:
str_list.append(match.group(0))
return "Util" + list_name+".str"+str(len(str_list)-1)
else:
return match.group(0) def replace_china(path):
lua_file = open(path)
file_content = lua_file.read()
# lua中tabel的名字
global list_name, str_list
str_list = []
list_name = os.path.split(path)[1][:-4].upper()
try:
utf_content = file_content.decode("utf8")
except:
print path
return
re_str=u'"(.*?)"'
pattern = re.compile(re_str)
results = pattern.sub(replace, utf_content) if results != utf_content:
#写入文件
write_file(path, results)
create_tabel(path) def write_file(path, replace_str):
lua_file = open(path, "w")
lua_file.write(replace_str)
lua_file.close() # 创建lua中的tabel
def create_tabel(path):
global list_name
lua_tabel = open("common\utils\Language.lua", "a")
lua_tabel.write("\n")
lua_tabel.write("Util" + list_name + " = {\n")
for index, china_str in enumerate(str_list):
lua_tabel.write(" str" + str(index) + " = " + china_str + ",\n")
lua_tabel.write("}")
lua_tabel.close() def walk_dir():
for root, dir_names, file_names in os.walk(root_path):
for file_name in file_names:
full_path = os.path.join(root, file_name)
if is_file(full_path):
if check_file(full_path):
replace_china(full_path)
else:
walk_dir(full_path) if __name__ == "__main__":
walk_dir()
# replace_china(sys.argv[1])

Python脚本自动提取和替换代码中的中文的更多相关文章

  1. 使用python脚本实现统计日志文件中的ip访问次数

    使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...

  2. Cocos2dx 代码中包含中文导致编译错误的问题解决方法

    从网上下载一个cocos2dx的源码,是IOS版本的,我将其迁移到windows 7下 ,用VS2010编译,出现一堆的C2001错误: 1>d:\cocos2d-x-2.2.6\mygame\ ...

  3. linux shell 脚本获取和替换文件中特定内容

    1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) timeout title live find --se ...

  4. IDEA中的替换功能(替换代码中的变量名很好用哦)

    刚刚上班不久,这两天正在研究公司项目里面的代码,今天用阿里的插件扫描了一下代码,发现代码中有很多变量的命名,没有遵循驼峰式的命名规则.一开始我一个一个的修改这些变量名,后来无意中用了一下Ctrl+F( ...

  5. 利用Python 脚本生成 .h5 文件 代码

    利用Python 脚本生成 .h5 文件 import os, json, argparse from threading import Thread from Queue import Queue ...

  6. 解决python代码中含有中文报错

    python中写入中文时报错如下图所示: 依照网上解决方法:在py文件中加入:#encoding=utf-8 然后继续报错如下图所示: 解决方法: 在py文件中加入: import sysreload ...

  7. 如何设置可以避免php代码中的中文在浏览器中成为乱码?

    其实很简单,只需要在代码开始的前面加上一条这样的语句就行: //这里面我的浏览器中的字符编码格式为utf-8,所以这里我设置为utf-8,如果你的浏览器中的默认编码不是这个,请选择浏览器默认的编码格式 ...

  8. JAVA 代码中使用中文的办法

    在编译代码中插入 -encoding UTF-8 示例: javac -encoding UTF-8 *.java

  9. xcode在代码中查找中文

    总是忘记xcode中查找中文,这次记下来,以后就不会忘记了,哈哈 请看下图: 切换到查找,点击find后面的text,选择Regular Expression,然后输入 1. 查找非ascii的字符 ...

随机推荐

  1. Redis之PHP操作

    一.Redis连接与认证 //连接参数:ip.端口.连接超时时间,连接成功返回true,否则返回false $ret = $redis->connect('127.0.0.1', 6379, 3 ...

  2. js文本框字符数输入限制

    我们常常在前台页面做一些文本输入长度的验证,为什么呢?因为数据库字段设置了大小,如果不限制输入长度,那么写入库时就会引发字符串截断异常.今天就给大家分享一个jquery插件来解决这一问题. (func ...

  3. 流量操控技术---rinetd

    应用场景 实验机器:monomall防火墙,windows xp ,kali , windows 2003 场景假设,公司对你的办公电脑做了限制只允许53端口出去不能访问互联网. 突破思路:见上图 下 ...

  4. windows下大文件SQL导入问题

    今天遇到了一个比较棘手的问题,SQL文件太大,导入数据库时太过于麻烦,超过1G以后nodpad.sublime等编辑器都打不开,这就有了一个比较尴尬的问题. 因为是本地测试所以环境是windows,最 ...

  5. 爬虫-request以及beautisoup模块笔记

    requests模块 pip3 install requests res = requests.get('') res.text res.cookies.get_dict() res.content ...

  6. AngularJS应用,常用数组知识点

    AngularJS 1:ng-click,ng-model,ng-bind,ng-class,ng-hide,ng-app 2:placeholder, 3:{}中加入代码“:true|false”, ...

  7. Day3---------网络基础和DOS命令

    一.网络分类 1.地理位置 1).局域网(LAN) 2).城域网(MAN) 3).广域网(WAN) 2.传输介质 1).有线网 2).光纤网 3).无线网 3.层--------设备 传输层----- ...

  8. jmeter 前置处理器提取用户cookie信息 比如jsessionid

    一般登录过程分成两步,一步是打开登录页面, 一步是输入用户名和密码登录 现在B/S架构的系统好多时候都只在客户端的cookie信息保留一个jsessionId,然后每次请求的时候在请求的头信息的coo ...

  9. java.util.zip

    使用java自带的类 java.util.zip进行文件/目录的压缩的话,有一点不足,不支持中文的名件/目录命名,如果有中文名,那么打包就会失败.本人经过一段时间的摸索和实践,发现在一般的Ant.ja ...

  10. 数据库(Oracle)运维工作内容及常用脚本命令

    1.系统资源状况:--内存及CPU资源  --linux,solaris,aix    vmstat 5  --说明:    1)观察空闲内存的数量多少,以及空闲内存量是否稳定,如果不稳定就得想办法来 ...