# -*- 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. Nginx负载均衡——基础功能

    熟悉Nginx的小伙伴都知道,Nginx是一个非常好的负载均衡器.除了用的非常普遍的Http负载均衡,Nginx还可以实现Email,FastCGI的负载均衡,甚至可以支持基于Tcp/UDP协议的各种 ...

  2. 【linux之软件安装,rpm,yum】

    一.软件管理 静态库 动态库静态库:在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库动态库:在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入. 链接是程序调用库的过程. 静 ...

  3. C#中的函数式编程:序言(一)

    学了那么久的函数式编程语言,一直想写一些相关的文章.经过一段时间的考虑,我决定开这个坑. 至于为什么选择C#,在我看来,编程语言分三类:一类是难以进行函数式编程的语言,这类语言包括Java6.C语言等 ...

  4. 基于新浪SAE平台的微信开发

      自己的微信公众平台开发差不多了,欢迎关注试用哦,我会不定期在那里分享技术文章! 主要功能: 输入t+中文或者英文返回对应的英中翻译 输入[m]随机来首音乐听,建议在wifi下听 输入[ly+你的留 ...

  5. php notice提示

    php页面内添加error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE ); OK.

  6. 鹅厂优文 | 决策树及ID3算法学习

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~. 作者:袁明凯|腾讯IEG测试开发工程师 决策树的基础概念 决策树是一种用树形结构来辅助行为研究.决策分析以及机器学习的方式,是机器学习中的 ...

  7. 谁能用通俗的语言解释一下什么是 RPC 框架?

    转载自知乎:https://www.zhihu.com/question/25536695 知乎上很多问题的答案还是很好的,R大就经常在上面回答问题 关于RPC你的题目是RPC框架,首先了解什么叫RP ...

  8. 快速创建 HTML5 Canvas 电信网络拓扑图

    前言 属性列表想必大家都不会陌生,正常用 HTML5 来做的属性列表大概就是用下拉菜单之类的,而且很多情况下,下拉列表还不够好看,怎么办?我试着用 HT for Web 来实现属性栏点击按钮弹出多功能 ...

  9. shiro(二)自定义realm,模拟数据库查询验证

    自定义一个realm类,实现realm接口 package com; import org.apache.shiro.authc.*; import org.apache.shiro.realm.Re ...

  10. 笔记:Spring Cloud Ribbon 客户端配置详解

    自动化配置 由于 Ribbon 中定义的每一个接口都有多种不同的策略实现,同时这些接口之间又有一定的依赖关系,Spring Cloud Ribbon 中的自动化配置能够很方便的自动化构建接口的具体实现 ...