加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

(一)python 格式化 excel 格式

发布时间:2020-12-20 13:00:06 所属栏目:Python 来源:网络整理
导读:需求: 客户通过 sftp 上传了一个 poc测试的 excel文件, 下到 云桌面 查看,发现一堆格式问题, 怎么办呢? 公司又不允许 吧文件下载到本地处理, 只能在 服务器上进行处理。 一堆的类型需要转换, 时间格式也是错误的,想想 可以借助 python 来做处理, 转

需求:

  客户通过 sftp 上传了一个 poc测试的 excel文件, 下到 云桌面 查看,发现一堆格式问题, 怎么办呢? 公司又不允许 吧文件下载到本地处理, 只能在 服务器上进行处理。
一堆的类型需要转换, 时间格式也是错误的,想想 可以借助 python 来做处理, 转成 csv格式,都转成 string 格式,接口也符合。
?
说罢,就这么干。 因为没怎么写过 python, 内心还是 恐惧的。
找了一个 解析 excel 的demo, 找个 改了改,以前处理excel 文件,打印字段测试是可以的,

问题1、这次 放到 服务器上运行 居然 读取第一个 单元格的字段就报 编码问题。

知道是编码问题,但是不知道why(以前在本地也处理过文件,没有问题。) 咨询了以前python 大神, 让我 encode(‘utf-8‘) 试试。
?

再执行成功了。 虽然还是不知道why ,文件本身就是 设置为 utf8 的编码。(还没去深究!!!!!)
?

2、内容转成 csv文件后,发现 顺序 不符合要求,想了一下,也想不出什么高端的方法,只得用最low的方法

?

庆幸的是处理的 内容还是比较少。不存在性能之说。

问题3: 字符串中有 表情符,没处理成功【网上找了几个 demo 都测试 不通过,就先不管了,直接先存库了】

总结:

在用python 处理 格式过程中,感觉也不是很难,难点是不知道可以用 哪些 包 可以处理,一些基本的 语法问题。 只是文本处理的话,还是不难的。
?
主要代码如下:(别笑,我只是个python小白)
‘‘‘
    读 excel文件
‘‘‘
def read_from_excel(filepath):
    data = xlrd.open_workbook(filepath)
    table = data.sheets()[0]
    nor = table.nrows
    nol = table.ncols

    print row: %d,colume: %d % (nor,nol)
    resutl = []

    for i in range(1,nor):
        dict = {}
        flag = True
    #    if i == 10:
     #       break
        for j in range(nol):
            title = table.cell_value(0,j).encode(utf-8)
            print(str(i) + -- + str(j) + ---+ title)
            #print(chardet.detect(table.cell_value(i,j)))
            value = (str(table.cell_value(i,j).encode(utf-8)).replace(n,‘‘))
            print(str(i) + -- + str(j) + ---+value)
                # print value
            if title == identitu_type:
                if value == SSS:
                    value = SSS card
                elif value == PASSPORT:
                    value = Passport
                elif value == DRIVERLICENCE:
                    value = "Driver‘s license"
                elif value == PHILHEALTH:
                    value = "PhilHealth"
                elif value == UMID:
                    value = "UMID"
                else:
                    flag = False
            print(str(i) + -- + str(j) + ---+value)

            dict[title] = remove_emoji(value)
        if flag:
            resutl.append(dict)

    return resutl
‘‘‘
    字典转 csv文件
‘‘‘
def nestedlist2csv(list,out_file):
    with open(out_file,wb) as f:
        title = []
        w = csv.writer(f)
        fieldnames=list[0].keys()  # solve the problem to automatically write the header
        print fieldnames
       
        title = [Name,id_card,phone,identitu_type,Date]
        w.writerow(title)
        for row in list:
            print(row.values)
            value = [row[Name],row[id_card],row[phone],row[identitu_type],row[Date]]
            w.writerow(value)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读