网站云空间和普通空间,要做网络推广,二维码转链接,专业设计网站公司国际化字条匹配并导出为excel格式
需求
将jsp页面里的key值#xff0c;就是spring:message codegsyezer_Single_crystal/里的gsyezer_Single_crystal。和对应的字条对应上#xff0c;并以excel表格形式输出。
jsp页面key值示例
label for就是spring:message codegsyezer_Single_crystal/里的gsyezer_Single_crystal。和对应的字条对应上并以excel表格形式输出。
jsp页面key值示例
label forspring:message codexhb_comp_type/!-- 组件类型--/label
select name classsys_select one_key_moduleTypeoption value1spring:message codegsyezer_Single_crystal/!-- 单晶--/optionoption value2spring:message codegsyezer_Polycrystalline/!-- 多晶--/optionoption value3spring:message codegsyezer_film/!-- 薄膜--/option
/select对应字条文件示例 xhb_comp_type组件类型
gsyezer_Single_crystal单晶
gsyezer_Polycrystalline多晶
gsyezer_film薄膜
gsyezer_Material_name物料名称
gsyezer_Product_specification产品规格
gsyezer_Material_type物料类型
gsyezer_Brand品牌
......输出excel表格示例 python实现
import re
import pandas as pd
# 读取
with open(D:\\desktop\\workSpace\\index.txt, r, encoding UTF-8) as f:content f.read()
# 匹配
pattern rspring:message code\(.*?)\
matches re.findall(pattern, content)# 读取lang文件
with open(D:\\desktop\\workSpace\\lang.txt, r, encoding UTF-8) as f:content1 f.readlines()
# 匹配
pattern1 re.compile(r(\w)(.*))
matches1 []
for line in content1:match1 pattern1.search(line)if match1:for i in matches:if i match1.group(1):key, value i, match1.group(2)matches1.append((value, key))
# 去重
df pd.DataFrame(matches1, columns[字条, 对应国际化key])
df df.drop_duplicates()
# 输出
df.to_excel(D:\\desktop\\workSpace\\index.xlsx, indexFalse)
#需要两个包:pandas、openpyxl
#pip install pandas
#pip install openpyxl 代码解释
打开名为 “C:\Users\yxj\Desktop\workSpace\index.txt” 的文件并读取文件内容到变量 content 中。
with open(D:\\desktop\\workSpace\\index.txt, r, encoding UTF-8) as f:content f.read()使用正则表达式 r’spring:message code“(.*?)”’ 在 content 中查找匹配的字符串。匹配结果保存在列表 matches 中。
pattern rspring:message code\(.*?)\
matches re.findall(pattern, content)打开名为 “C:\Users\yxj\Desktop\workSpace\lang.txt” 的文件并逐行读取文件内容到列表 content1 中。
with open(D:\\desktop\\workSpace\\lang.txt, r, encoding UTF-8) as f:content1 f.readlines()使用正则表达式 r(\w)(.*) 对 content1 中的每一行进行匹配。匹配的结果保存在列表 matches1 中。
pattern1 re.compile(r(\w)(.*))
matches1 []对于每个 matches 中的元素遍历 matches1 中的每一行。如果匹配成功将匹配的结果以 (value, key) 的形式添加到 matches1 中。
for line in content1:match1 pattern1.search(line)if match1:for i in matches:if i match1.group(1):key, value i, match1.group(2)matches1.append((value, key))使用 pandas 库将 matches1 转换为数据框 df并设置列名为 “字条” 和 “对应国际化key”。
df pd.DataFrame(matches1, columns[字条, 对应国际化key])去除数据框中的重复行。
df df.drop_duplicates()将数据框保存为名为 “C:\Users\yxj\Desktop\workSpace\index.xlsx” 的 Excel 文件其中不包含索引列。
df.to_excel(D:\\desktop\\workSpace\\index.xlsx, indexFalse)在js中嵌套引入的国际化字条
import re
import pandas as pdwith open(D:\\desktop\\workSpace\\mainjs.txt, r, encoding UTF-8) as f:content f.read()
# 待匹配的字符串
text spring_lang.oss_Analysis_installationTime,a (?spring_lang.).*?(?,|\s|\|\|\)|;)# pattern rquick\sbrown\s(\w)\sjumpsmatches re.findall(a, content)
# print(matches)pattern1 re.compile(r(\w)(.*))with open(D:\\desktop\\workSpace\\langjsp.txt, r, encoding UTF-8) as f:# 以数组的形式读入 数组2lines f.readlines()
result []
for key in matches:for line in lines:if re.search(key, line):result.append(re.findall(rcode(.?), line)[0])
# result就是key值
# print(result)
# 读取真正的lang包
with open(D:\\desktop\\workSpace\\lang.txt, r, encoding UTF-8) as f:content1 f.readlines()
# print(content1)
pattern1 re.compile(r(.*)(.*))matches1 []
for line in content1:match pattern1.search(line)if match:# print(match)for i in result:if i match.group(1):key, value i, match.group(2)matches1.append((value, key))print(result)
df pd.DataFrame(matches1, columns[字条, 对应国际化key])
df df.drop_duplicates()# 将 DataFrame 输出到 Excel 文件中
df.to_excel(D:\\desktop\\workSpace\\index.xlsx, indexFalse)使用时需要创建以下几个目录
index.txt为jsp页面index.xlsx为输出字条与对应的key值lang.txt为语言包langjsp.txt为存储封装过的lang的jsp文件mainjs.txt为有引用国际化字条的js文件
格式 index.txt divdiv classsys_tab_box mb_15ul classsys_tab_list flex_centerli authport2-2-1a href%request.getContextPath()%/plantbC/plantDevice/getInvPage classfs_18i classiconfont mr_5#xe6b8;/ispring:message codeupdate_common_inv_sn/!-- 逆变器--/a/lili authport2-2-2a href%request.getContextPath()%/plantbC/plantDevice/getDatalogPage classfs_18i classiconfont mr_5#xe6a5;/ispring:message codedevice_datalog/!-- 数据采集器--/a/lili classcurr authport2-2-3a href%request.getContextPath()%/plantbC/plantDevice/getMeterPage classfs_18i classiconfont mr_5#xe6b6;/ispring:message codework_meter/!-- 智能电表--/a/lili authport2-2-4a href%request.getContextPath()%/plantbC/plantDevice/getEnvPage classfs_18i classiconfont mr_5#xe6a8;/ispring:message codework_env/!-- 环境监测仪--/a/li/ul/div lang.txt ################################# 汉语: 2014-11-12 ########################################
login_login监控/运维OSS登录
login_loginOld旧版
login_down下载
login_help帮助
login_nameOrPassError用户名或密码错误
login_valiCodeWrong验证码错误
login_singIn登 录
login_newUser注 册
login_forgetPass忘记密码langjsp.txt NO:spring:message codeservice_question_xuhao/,//序号
devSer:spring:message codeservice_question_deviceOrder/,//设备序列号
subArrayName:spring:message codeasd_Subarray_name/,//子阵名称
faultStrNum:spring:message codesdf_Fault_string/,//故障组串数
strNum:spring:message codesdf_Total_number_strings/,//组串总数
DiagnosisTime:spring:message codenew_Diagnosis_time/,//诊断时间
new_mission_name:spring:message codenew_mission_name/,//任务名称
xhb_notice:spring:message codenew_prompt/,//提示
xhb_details:spring:message codetigo_details/,//详情mainjs.txt var b compareTime2(minMaxtimeList,minMaxtimeList2);//true为交集
if(b){oComFn.sysAlert(spring_lang.there_is_a_conflict_in_the_time_interval_selected_by_Fengguping);//峰谷平所选时间区间有冲突请重选return false;
}else{return true;
}不会python ctrl CV手已抽筋