今天,也是在学编程的一天,但却接到了来自了学生会的任务。把一个excel表的内容复制到另一个excel表中,当然,还需要处理再复制,原表与新表的格式不一样。没办法,没时间学编程,干脆就用今天这个任务来学编程吧。 刚开始我就是学习的这个,读取excel文件和写入excel文件。 使用的模块:xlrd 注意:这里我遇到了第一个错误:输出结果是:Process finished with exit code 0 有其他方法,但是去除效果不好,总会留几个’’在列表中。这里我们需要的第一列,就只打印了第一列 接着我们把上面处理和的数据写入另一个excel中。网上还有很多方法,自己选择一种就可以了,大同小异 运行结果如下: 直接看代码:` 这里重点介绍yield在此处的用法 这里yield可以为函数返回值塞数据,去除adlist中的每一项,把i+1塞回原位,因此上面这个分为子列表也是一样的原理。 一共有三种方法: 这里还需要再总结一下zip函数 遍历字典: 重点总结这种,可以遍历整个字典,key放关键字,value放值。其他的方法是用key遍历关键字,再用dict[key]遍历值。 今天总结就这样了,我要去继续学我的新东西了。拜拜
于是 我今天学到如下知识(先总结一下学到了什么):对excel的读取和写入,去除列表中的’’,把列表映射为字典(dict函数的用法),把一个列表分成子列表,下面就一个一个的去总结它们:一.对excel的读取和写入:
读取excel文件及去除列表中的’’:
直接看程序:# -*-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()
这个意思是程序执行完成了。
然后就没有任何输出了。这是怎么回事呢,原来是我创建项目时配置出了问题。我使用的是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表中写入数据
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的英文单词是生产,就是生成器的意思。先看一个小例子def addlist(alist): for i in alist: yield 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() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同(所以就可以理解上面的用法了)for key, value in a.items(): print(kv) print(value)
当然可以单独遍历 dict.ket, 和dict.value,没什么好总结的,跟遍历列表一样的方法:for in语句。
如果有任何错误,欢迎指正
非常感谢。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算