首先是读取文件,并记录到对应的EXCEL表格中,等待替换的语言.这里使用正则,首先找到对应的"/cocosstudio"文件夹中带.csb后缀的文件,然后匹配两次,第一次找出带""内容,第二次是找到里面的中文(也可以是其他匹配),然后保存到相应的EXCEL中.
#!/usr/bin/python
# -*- coding: utf-8 -*-import re
import os
import sys
import openpyxl
reload(sys)
sys.setdefaultencoding('utf8')
print sys.getdefaultencoding()
def listFiles(dirPath):
fileList = []
for root, dirs, files in os.walk(dirPath):
for fileObj in files:
filePath = os.path.join(root, fileObj)
fileextension = os.path.splitext(filePath)[1]
if fileextension == '.csd':
fileList.append(filePath)
return fileList
def main():
fileDir = os.getcwd() + "/cocosstudio"
fileList = listFiles(fileDir)
rowNUM = 1
exl = openpyxl.Workbook()
exl.create_sheet(index = 0, title = 'sheet1')
sheet1 = exl['sheet1']
row0 = [u'美术文件名',u'中文',u'维文']
for i in range(1,len(row0)+1):
sheet1.cell(row = 1, column = i).value = row0[i-1]
for fileObj in fileList:
f = open(fileObj, 'r+')
fileName = os.path.basename(fileObj).split('.')[0]
all_the_lines = f.readlines()
f.close()
print("处理文件: " + fileName)
for line in all_the_lines:
regex = re.compile("(['\"])(?:\\\.|.)*?\\1")
regex1 = re.compile(u"[\u4e00-\u9fa5]+")
line1 = line.decode('utf8')
for match in regex.finditer(line1):
start = match.start()
end = match.end()
temp = line1[start:end]
counter = 0
for match1 in regex1.finditer(temp):
counter += 1
if counter > 0:
rowNUM +=1
sheet1.cell(row = rowNUM, column = 1).value = fileName
sheet1.cell(row = rowNUM, column = 2).value = match.group()
exl.save('翻译.xlsx')
print("处理完毕")
if __name__=='__main__':
main()
接下来等待相应的翻译内容填好后,进行第二部操作,找到对应的文件,并进行替换操作:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import os
import sys
import openpyxl
reload(sys)
sys.setdefaultencoding('utf8')
print sys.getdefaultencoding()
rowNUM = 0
def listFiles(dirPath):
fileList = []
for root, dirs, files in os.walk(dirPath):
for fileObj in files:
filePath = os.path.join(root, fileObj)
fileextension = os.path.splitext(filePath)[1]
if fileextension == '.csd':
fileList.append(filePath)
return fileList
def replace(filename, startRow, endRow, sheet):
temp = []
with open(filename, "r") as f:
lines = f.readlines()
with open(filename, "w") as f_w:
for i in range(startRow,endRow+1):
txt_c = sheet.cell(row = i, column = 2).value
txt_w = sheet.cell(row = i, column = 3).value
for line in lines:
if txt_c in line:
if txt_w :
print("开始替换")
line = line.replace(txt_c, txt_w)
temp.append(line)
lines = temp
temp = []
for l in lines:
f_w.write(l)
def main():
fileDir = os.getcwd() + "/cocosstudio/"
exl = openpyxl.load_workbook('翻译.xlsx')
sheet1 =exl['sheet1']
oldfilename = ''
newfilename = ''
startRow = 2
print(sheet1.max_row)
for i in range(2,sheet1.max_row+1):
nextfilename = sheet1.cell(row = i+1, column = 1).value
curfilename = sheet1.cell(row = i, column = 1).value
if curfilename != nextfilename:
filefullname = fileDir + curfilename + '.csd'
endRow = i
print(filefullname)
print("开始:"+str(startRow) + "结束:" + str(endRow))
replace(filefullname, startRow, endRow, sheet1)
startRow = i+1
if __name__=='__main__':
main()