123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
-
- import os.path
- import sys
- import codecs
- import xlrd
- import xlwt
- from xlwt import Workbook
- import shutil
- import re
- ZONE = "vietnam"
- logFile = "createDictionary.txt"
- excelDir = ".\策划脚本"
- csvDir = ".\工具库文件\\client_csv_config"
- dictDir = ".\dict"+"\\" +ZONE
- uiDir = "..\GameEditors\\UIEdit\\res\\ui_edit\\xmds_ui\\"
- scenesDir = "..\GameEditors\\GameEditor\\data\\scenes\\"
- itemDir = "..\GameEditors\\GameEditor\\data\\items\\"
- uiPattern = "([tT]?ext=\".*?\")"
- scenesPattern = "(<element>showname=.*?</element>)"
- itemsPattern = "(<PickActionName>.*?</PickActionName>)"
-
- excelDir = unicode(excelDir,'utf8')
- csvDir = unicode(csvDir,'utf8')
- dictDir = unicode(dictDir,'utf8')
- translatedFile = dictDir + '\\translated.xls'
- unTranslateFile = dictDir + '\\unTranslated.xls'
- g_objName=""
- transDict = {}
- unTransDict = {}
- def isContainChinese(check_str):
- for ch in check_str.decode('utf-8'):
- if u'\u4e00' <= ch <= u'\u9fff':
- return True
- return False
- def loadTranslatedDict():
- data = xlrd.open_workbook(translatedFile)
- print "Begin loadTranslatedDict : " + translatedFile
- for table in data.sheets():
- print " sheet : " + table.name
- try:
- nrows = table.nrows
- ncols = table.ncols
- if nrows <= 3:
- return
- for r in range(nrows):
- if ncols<2:
- continue
- key = str(table.cell_value(r,0)).strip()
- val = str(table.cell_value(r,1)).strip()
- if len(key)>0 and len(val)>0 :
- transDict[key] = val
- except Exception,e:
- print Exception,":",e
- os.system('pause')
- print "loadTranslatedDict OK"
- return
-
- def NumberToString (aFloat):
- strTemp = str(aFloat)
- if len(strTemp) == 0:
- return '0';
- if type(aFloat) != float:
- print strTemp + u" - 数字类型格式错误"
- os.system("pause")
- return ""
- strList = strTemp.split(".")
- if len(strList) == 1 :
- return strTemp
- else:
- if strList[1] == "0" :
- return strList[0]
- else:
- print g_objName + " : " + strTemp + u" - 类型是否应该改为FLOAT"
- os.system("pause")
- def FloatToString (aFloat):
- strTemp = str(aFloat)
- if len(strTemp) == 0:
- return '0';
- if type(aFloat) != float:
- print strTemp + u" - 数字类型格式错误"
- os.system("pause")
- return ""
- strList = strTemp.split(".")
- if len(strList) == 1 :
- return strTemp
- else:
- if strList[1] == "0" :
- return strList[0]
- else:
- return strTemp
- def StringToString (aStr):
- if type(aStr) != float:
- return str(aStr)
- strTemp = str(aStr)
- strList = strTemp.split(".")
- if len(strList) == 1 :
- return strTemp
- else:
- if strList[1] == "0" :
- return strList[0]
- else:
- return strTemp
- def haveNext(table, col, row, max_cols):
- for c in range(col, max_cols):
- objType = str(table.cell_value(row, c));
- if(objType.find("@") == -1):
- return 1
- return 0
- def table2Dict(table):
- type = sys.getfilesystemencoding()
- nrows = table.nrows
- ncols = table.ncols
- if nrows <= 3:
- return
- for r in range(nrows):
- rowName = str(table.cell_value(r,0))
- if(rowName.find("@")>=0 ):
- continue
- for c in range(ncols):
- strCellValue = ''
- objName = str(table.cell_value(1,c))
- global g_objName
- g_objName= objName
-
- if(objName.find("@") >= 0):
- continue
- if r <= 2:
- continue
-
- objType = str(table.cell_value(2,c))
- if objType=='STRING':
- strCellValue = str(table.cell_value(r,c)).strip()
- print strCellValue.decode('utf-8').encode(type)
- if(isContainChinese(strCellValue)):
-
- if not strCellValue in transDict :
- unTransDict[strCellValue] = ''
- print "--Operate ",table.name," OK----------"
- return
- def excelToDict(excelFileName,lgFile):
- print 'begin trans excel:' + excelFileName
- lgFile.write('Excel dir:' + excelFileName)
- lgFile.write(u"\r\n")
-
- data = xlrd.open_workbook(excelFileName)
- for table in data.sheets():
- print "sheet : " + table.name
- lgFile.write('\t'+'sheetCO : ' + table.name)
- lgFile.write(u"\r\n")
- sheetName = table.name.lower()
- if (not sheetName.startswith('config')) and (not sheetName.startswith('sheet')) and (not sheetName.startswith('remark')) and (not sheetName.startswith('(')):
- if(sheetName=='blackword' or sheetName=='prefix' or sheetName=='suffix'):
- continue
- try:
- table2Dict(table)
- except Exception,e:
- print Exception,":",e
- os.system('pause')
- print "trans excel OK"
- def csvToDict(csvFileName,lgFile):
- print 'begin trans csv:' + csvFileName
- lgFile.write('csv file:' + csvFileName)
- lgFile.write(u"\r\n")
-
- data = open(csvFileName,"r")
- type = sys.getfilesystemencoding()
- try:
- reader = data.readlines()
- for strCellValue in reader:
- if(isContainChinese(strCellValue)):
- index = strCellValue.find(',')
- if index > 0:
- val1 = strCellValue[0:index]
- val2 = strCellValue[index+1:len(strCellValue)]
-
- key = val2.strip()
- key = key.rstrip(',')
- key = key.strip('\"')
- key = key.strip()
-
- print key.decode('utf-8').encode(type)
-
- if not key in transDict :
- unTransDict[key] = ''
- data.close()
- except Exception,e:
- print Exception,":",e
- os.system('pause')
- print "trans csv OK"
- def xmlToDict(xmlFileName,destPattern,lgFile):
- print 'begin trans xml:' + xmlFileName
- lgFile.write('xml file:' + xmlFileName)
- lgFile.write(u"\r\n")
-
- data = open(xmlFileName,"r")
- type = sys.getfilesystemencoding()
- try:
- reader = data.read()
- dest = re.compile(destPattern)
-
- res = dest.findall(reader)
- for elem in res:
- print elem
- strCellValue = str(elem).strip()
- if len(strCellValue) > 0:
- if(isContainChinese(strCellValue)):
- print strCellValue.decode('utf-8').encode(type)
-
- if not strCellValue in transDict :
- unTransDict[strCellValue] = ''
- data.close()
- except Exception,e:
- print Exception,":",e
- os.system('pause')
- print "trans xml OK"
- def walkXmlDir(xmlDir,destPattern,lgFile):
- print xmlDir
- if not os.path.exists(xmlDir):
- lgFile.write(xmlDir+' xml files dir not exist!!!')
- lgFile.write(u"\r\n")
- os.system('pause')
-
- for parent,dirnames,filenames in os.walk(xmlDir):
- for filename in filenames:
- if filename.endswith(".xml") :
- print 'filename : ' + filename
- excelFileName = os.path.join(parent, filename)
- xmlToDict(excelFileName,destPattern,lgFile)
- def extractXml(lgFile):
- lgFile.write('==========================Begin extract xml files==================')
- lgFile.write(u"\r\n")
- walkXmlDir(uiDir, uiPattern, lgFile)
- walkXmlDir(scenesDir, scenesPattern, lgFile)
- walkXmlDir(itemDir, itemsPattern, lgFile)
-
-
- if __name__ == '__main__':
- reload(sys)
- sys.setdefaultencoding( "utf-8" )
-
-
- if not os.path.exists(dictDir):
- os.makedirs(dictDir)
-
- try:
- if os.path.exists(translatedFile):
- loadTranslatedDict()
-
- lgFile = codecs.open(logFile,"w","utf-8")
-
-
- extractXml(lgFile)
-
- print csvDir
- if not os.path.exists(csvDir):
- lgFile.write(csvDir+' csv files dir not exist!!!')
- lgFile.write(u"\r\n")
- os.system('pause')
- lgFile.write('==========================Begin extract csv files==================')
- lgFile.write(u"\r\n")
- for parent,dirnames,filenames in os.walk(csvDir):
- for filename in filenames:
- print 'filename : ' + filename
- excelFileName = os.path.join(parent, filename)
- csvToDict(excelFileName,lgFile)
-
- print excelDir
- lgFile.write('==========================Begin extract excel files==================')
- lgFile.write(u"\r\n")
- for parent,dirnames,filenames in os.walk(excelDir):
- for filename in filenames:
- if not filename.startswith("~$"):
- sufix = os.path.splitext(filename)[1][1:]
-
- if sufix == 'xls' or sufix == 'xlsx':
- print 'filename : ' + filename
- excelFileName = os.path.join(parent, filename)
- excelToDict(excelFileName,lgFile)
-
-
- lgFile.write('==========================All OK==================')
- lgFile.close()
-
- book = Workbook(encoding='utf-8')
- sheet1 = book.add_sheet('Sheet 1')
- row = 0;
- col = 0;
- for item in unTransDict.keys():
- sheet1.write(row,col,str(item))
- row += 1
- book.save(unTranslateFile)
- except Exception,e:
- print Exception,":",e
-
|