python处理excel的一天(使用python做一些处理,excel我是真不怎么会,python也在学,加油)(涉及列表,字典,从文件读取,写入文件操作,一些错误总结)

今天,也是在学编程的一天,但却接到了来自了学生会的任务。把一个excel表的内容复制到另一个excel表中,当然,还需要处理再复制,原表与新表的格式不一样。没办法,没时间学编程,干脆就用今天这个任务来学编程吧。
于是 我今天学到如下知识(先总结一下学到了什么):对excel的读取和写入,去除列表中的’’,把列表映射为字典(dict函数的用法),把一个列表分成子列表,下面就一个一个的去总结它们:

一.对excel的读取和写入:

刚开始我就是学习的这个,读取excel文件和写入excel文件。

读取excel文件及去除列表中的’’:

使用的模块:xlrd
直接看程序:

# -*-coding:utf-8 -*-
import xlrd
import xlwt
import xlutils.copy


def read_excel():
    workbook = xlrd.open_workbook(
        r'E:\test.xls')
    //获取excel文件中表的名字
    print(workbook.sheet_names())
    //获取excel表中的第一张表,通过index来获取,index从0开始编号
    sheet2 = workbook.sheet_by_index(0)
    //获取excel表中的第一行,行数从0开始编号。
    rows = sheet2.row_values(0)
    //获取excel表中的第一列,列数从0开始编号
    cols = sheet2.col_values(0)
    //for in 迭代打印第一行
   /* for row in rows:
        print(row)*/
    //直接打印第一列
    print(cols)
if __name__ == '__main__':
    read_excel()

注意:这里我遇到了第一个错误:输出结果是:Process finished with exit code 0
这个意思是程序执行完成了。
然后就没有任何输出了。这是怎么回事呢,原来是我创建项目时配置出了问题。我使用的是pycharm ,刚刚使用的是pycharm提供的虚拟解释器。又因为test.xls文件不是在虚拟环境中的所以就没有输出。
在这里插入图片描述
如果点上面红色的地方就是使用的虚拟环境,第一次使用没有设置为下面的自己下载的解释器的话,就会默认为虚拟环境,需要将环境切换到自己下载的解释器。
然后就可以正常输出了:输出了第一行的内容
在这里插入图片描述
可以看到输出的棋种中有很多的 ‘’,这是因为test.xls 中的表格格式造成的。而我们只需要将棋种名称提取出来,然后写到另一个表格中,因此就需要把这个列表里面的’'给去除。去除方法如下:
直接看代码

  def remove_(the_list):
    while '' in the_list:
        the_list.remove('')

有其他方法,但是去除效果不好,总会留几个’'在列表中。这里我们需要的第一列,就只打印了第一列

def read_excel():
    workbook = xlrd.open_workbook(
        r'E:\test.xls')
    print(workbook.sheet_names())
    sheet2 = workbook.sheet_by_index(0)
    cols = sheet2.col_values(0)
    remove_(cols)
    print(cols)
if __name__ == '__main__':
    read_excel()

在这里插入图片描述

向另一个excel表中写入数据

接着我们把上面处理和的数据写入另一个excel中。网上还有很多方法,自己选择一种就可以了,大同小异

def write_excel():
    //打开要写入的excel
    rb = xlrd.open_workbook('F:\\test1.xls')
    wb = xlutils.copy.copy(rb)
    写入该excel的第一张表中
    ws = wb.get_sheet(0)
    //得到数据
    cols1 = read_excel()
    //循环写入
    for i in range(1, len(cols1)):
        ws.write(i + 1, 0, cols1[i])//写入第一列(i+1表示行数,0表示第一列)
    //保存(另存为)    
    wb.save('F:\\test1.1.xls')

运行结果如下:
在这里插入图片描述

二.把一个列表分为子列表

直接看代码:`

def func(the_list, childrenlist_len):
    for i in range(0, len(the_list), childrenlist_len):
        yield the_list[i:i + n]

这里重点介绍yield在此处的用法
yield的英文单词是生产,就是生成器的意思。先看一个小例子

def addlist(alist):

    for i in alist:

        yield i + 1

这里yield可以为函数返回值塞数据,去除adlist中的每一项,把i+1塞回原位,因此上面这个分为子列表也是一样的原理。
当然yield的用法不止这一个,这一次我只是初识yield,真要深入总结我们得总结一篇博客才能把这个总结清楚。

三.字典的生成和遍历(dict函数的用法):

一共有三种方法:

/*class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
**kwargs -- 关键字
mapping -- 元素的容器。
iterable -- 可迭代对象。*/
//示例代码
dict1 = {} 创建一个空字典
dict1 = dict(a='a',b='b')
//{'a': 'a', 'b': 'b'}
dict1 = dict(zip(['one', 'two', 'three'], [1, 2, 3])) 
//{'three': 3, 'two': 2, 'one': 1} 
dict1 =  dict([('one', 1), ('two', 2), ('three', 3)]
//{'three': 3, 'two': 2, 'one': 1}

这里还需要再总结一下zip函数
zip函数:zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同(所以就可以理解上面的用法了)

遍历字典:

for key, value in a.items():
       print(kv)
       print(value)

重点总结这种,可以遍历整个字典,key放关键字,value放值。其他的方法是用key遍历关键字,再用dict[key]遍历值。
当然可以单独遍历 dict.ket, 和dict.value,没什么好总结的,跟遍历列表一样的方法:for in语句。

今天总结就这样了,我要去继续学我的新东西了。拜拜
如果有任何错误,欢迎指正
非常感谢。

发布了16 篇原创文章 · 获赞 12 · 访问量 1375

猜你喜欢

转载自blog.csdn.net/weixin_45290352/article/details/105738278
今日推荐