用python创建一个列表,分别打印出列表的索引号和索引号对应的值

用python创建一个列表,分别打印出列表的索引号和索引号对应的值,第1张

list1 = ['a','b','c']

fmt = 'index %d value is %s'

print ', 'join([fmt % (idx, val)

    for idx, val in enumerate(list1)

    ])

# or

print ', 'join(map(

    lambda x: fmt%x, 

    enumerate(list1)

    ))

《用Python处理Excel表格》下篇来啦!

身为工作党或学生党的你,平日里肯定少不了与Excel表格打交道的机会。当你用Excel处理较多数据时,还在使用最原始的人工 *** 作吗?现在教你如何用Python处理Excel,从此处理表格再也不加班,时间缩短数十倍!

上篇我们进行了一些事前准备,目的是用Python提取Excel表中的数据。而这一篇便是在获取数据的基础上,对Excel表格的实 *** 处理。

第9行代码用来指定创建的excel的活动表的名字:

·不写第9行,默认创建sheet

·写了第9行,创建指定名字的sheet表

第9行代码,通过给单元格重新赋值,来修改单元格的值

第9行代码的另一种写法sheet['B1']value = 'age'

第10行代码,保存时如果使用原来的(第7行)名字,就直接保存;如果使用了别的名字,就会另存为一个新文件

插入有效数据

使用append()方法,在原来数据的后面,按行插入数据

·insert_rows(idx=数字编号, amount=要插入的行数),插入的行数是在idx行数的下方插入

·insert_cols(idx=数字编号, amount=要插入的列数),插入的位置是在idx列数的左侧插入

·delete_rows(idx=数字编号, amount=要删除的行数)

·delete_cols(idx=数字编号, amount=要删除的列数)

move_range(“数据区域”,rows=,cols=):正整数为向下或向右、负整数为向左或向上

举个例子:

openpyxlstylesFont(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)

其中,字体颜色中的color是RGB的16进制表示

再者,可以使用for循环,修改多行多列的数据,在这里介绍了获取的方法

Alignment(horizontal=水平对齐模式,vertical=垂直对齐模式,text_rotation=旋转角度,wrap_text=是否自动换行)

水平对齐:‘distributed’,‘justify’,‘center’,‘left’, ‘centerContinuous’,'right,‘general’

垂直对齐:‘bottom’,‘distributed’,‘justify’,‘center’,‘top’

当然,你仍旧可以调用for循环来实现对多行多列的 *** 作

设置行列的宽高:

·row_dimensions[行编号]height = 行高

·column_dimensions[列编号]width = 列宽

合并单元格有下面两种方法,需要注意的是,如果要合并的格子中有数据,即便python没有报错,Excel打开的时候也会报错。

merge_cells(待合并的格子编号)

merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)

拆分单元格的方法同上

unmerge_cells(待合并的格子编号)

unmerge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)

create_sheet(“新的sheet名”):创建一个新的sheet表

第11行,使用title修改sheet表的名字

remove(“sheet名”):删除某个sheet表

要删除某sheet表,需要激活这个sheet表,即:将其作为活动表(关于活动表的定义请看前面文章开头写的有)下面8~11行代码展示了原始活动表与手动更换活动表,第13行代码删掉活动表

背景知识

numpy与pandas

NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库;pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的,我们需要利用Pandas进行Excel的合并

1下面的代码生成了一个5行3列的包含15个字符的嵌套列表

(注意,第4行代码:15是等于35的,如果是15对应43,或者16对应53都会报错)

(注意,第5行代码,虽然5行3列是15个数据,但是可以指定数据从1开头,到16结束)

2添加表头

使用pandas库的DataFrame来添加表头。关于打印的结果,把最左侧的一列去掉之后会发现结果很和谐,这是因为最左侧的一列代表行号。此时xx变量的类型是

xlsxwriter模块一般是和xlrd模块搭配使用的,

xlsxwriter:负责写入数据,

xlrd:负责读取数据。

1创建一个工作簿

2创建sheet表

3写入数据

python导出数据到excel文件的方法:

1、调用Workbook()对象中的add_sheet()方法

1

2

wb = xlwtWorkbook()

ws = wbadd_sheet('A Test Sheet')

2、通过add_sheet()方法中的write()函数将数据写入到excel中,然后使用save()函数保存excel文件

1

2

3

4

5

6

7

wswrite(0, 0, 123456, style0)

wswrite(1, 0, datetimenow(), style1)

wswrite(2, 0, 1)

wswrite(2, 1, 1)

wswrite(2, 2, xlwtFormula("A3+B3"))

wbsave('examplexls')

完整代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

import xlwtfrom datetime import datetime

style0 = xlwteasyxf('font: name Times New Roman, color-index red, bold on',num_format_str='#,##000')

style1 = xlwteasyxf(num_format_str='D-MMM-YY')

wb = xlwtWorkbook()

ws = wbadd_sheet('A Test Sheet')

wswrite(0, 0, 123456, style0)

wswrite(1, 0, datetimenow(), style1)

wswrite(2, 0, 1)

wswrite(2, 1, 1)

wswrite(2, 2, xlwtFormula("A3+B3"))

wbsave('examplexls')

程序执行结果如下:

更多Python知识,请关注:Python自学网!!

(推荐 *** 作系统:windows7系统、Python 391,DELL G3电脑。)

读excel要用到xlrd模块,官网安装(http://pypipythonorg/pypi/xlrd)。然后就可以跟着里面的例子稍微试一下就知道怎么用了。大概的流程是这样的:

1、导入模块

import

xlrd

2、打开excel文件读取数据

data

=

xlrdopen_workbook('excelxls')

3、获取一个工作表

table

=

datasheets()[0]

#通过索引顺序获取

table

=

datasheet_by_index(0)

#通过索引顺序获取

table

=

datasheet_by_name(u'sheet1')#通过名称获取

4、获取整行和整列的值(返回数组)

tablerow_values(i)

tablecol_values(i)

5、获取行数和列数 

tablenrows

tablencols

6、获取单元格

tablecell(0,0)value

tablecell(2,3)value

就我自己使用的时候觉得还是获取cell最有用,这就相当于是给了你一个二维数组,余下你就可以想怎么干就怎么干了。得益于这个十分好用的库代码很是简洁。但是还是有若干坑的存在导致话了一定时间探索。现在列出来供后人参考吧:

1、首先就是我的统计是根据姓名统计各个表中的信息的,但是调试发现不同的表中各个名字貌似不能够匹配,开始怀疑过编码问题,不过后来发现是因为  空格。因为在excel中输入的时候很可能会顺手在一些名字后面加上几个空格或是tab键,这样看起来没什么差别,但是程序处理的时候这就是两个完全  不同的串了。我的解决方法是给每个获取的字符串都加上strip()处理一下。效果良好

2、还是字符串的匹配,在判断某个单元格中的字符串(中文)是否等于我所给出的的时候发现无法匹配,并且各种unicode也不太奏效,百度过一些解决  方案,但是都比较复杂或是没用。最后我采用了一个比较变通的方式:直接从excel中获取我想要的值再进行比较,效果是不错就是通用行不太好,个  呢不能问题还没解决。

二、写excel表

写excel表要用到xlwt模块,官网下载(http://pypipythonorg/pypi/xlwt)。大致使用流程如下:

1、导入模块

复制代码代码如下:

import

xlwt

2、创建workbook(其实就是excel,后来保存一下就行)

复制代码代码如下:

workbook

=

xlwtworkbook(encoding

=

'ascii')

3、创建表

复制代码代码如下:

worksheet

=

workbookadd_sheet('my

worksheet')

4、往单元格内写入内容

复制代码代码如下:

worksheetwrite(0,

0,

label

=

'row

0,

column

0

value')

5、保存

复制代码代码如下:

workbooksave('excel_workbookxls')

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/12183318.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存