大体的需求如下:
从已有的数据字典中(xslx)查找出对应的字段,翻译txt中的数据内容
txt中的内容如下:
customer id_card mobile
{
"alm_m3_id_bank_allnum" : "1",
"alm_m3_id_bank_orgnum" : "1",
"alm_m3_id_bank_selfnum" : "0",
"code" : "00",
"flag_applyloanmon" : "1",
"swift_number" : "xxxx"
}
......
xslx中内容如下:
key | value |
---|---|
alm_m3_id_bank_allnum | 近3月内,xxxxxx |
alm_d15_id_bank_orgnum | 近15天内,xxxxxx |
……
用Java来处理这样的需求肯定不是最佳的,正好最近在学python,刚好可以实战下。
思路
- 从xslx读取数据,形成python的字典结构;
- 依次读取txt中的数据,逐行翻译,将结果输入到新的list;
- 利用产生的list生产翻译后的文件。
实现
读取xlsx中的内容,生成数据字典。
import xlrd
def dictInit():
data = xlrd.open_workbook('xxxx.xlsx')
table = data.sheets()[0]
nrows = table.nrows
for i in range(nrows):
row_value = table.row_values(i)
# print(row_value[1], row_value[4])
key = "_".join(row_value[1].split("_")[2:])
value = ",".join(row_value[4].split(",")[1:])
print(key, value)
dict[key] = value
逐行匹配txt中的内容,把翻译后的结果放入结果list中。
def formateTxt():
str = ""
results=[]
file = open("xxxxx.txt",'r',encoding='utf-8')
for line in file.readlines():
lineTxt = line.split(":")
if len(lineTxt) > 1:
key_words = lineTxt[0].strip().strip('"').split("_")
key = "_".join(key_words[2:])
if (dict.__contains__(key)):
date = key_words[1]
m = ""
n = ""
if date[0] == "d":
m = "天"
elif date[0] == "m":
m = "月"
res = dict[key]+lineTxt[1]
results.append('近'+date[1]+m+'内,'+res)
else:
results.append(line)
return results
运行的主函数,最后将结果输出到新的txt中。
dict = {}
dictInit()
results = formateTxt()
r = '\n'.join(results)
f = open("result.txt","w",encoding='utf-8')
f.write(r)
f.close()