Python脚本自动提取和替换代码中的中文

 # -*- 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])

 

posted on 2017-01-10 13:47  二二的路人甲  阅读(1542)  评论(0编辑  收藏  举报