Python 学习笔记 -处理excel

来源:互联网 发布:描述设置数据有效性 编辑:程序博客网 时间:2024/06/06 09:30

大体的需求如下:

从已有的数据字典中(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,刚好可以实战下。

思路

  1. 从xslx读取数据,形成python的字典结构;
  2. 依次读取txt中的数据,逐行翻译,将结果输入到新的list;
  3. 利用产生的list生产翻译后的文件。

实现

读取xlsx中的内容,生成数据字典。

import xlrddef 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()