第十二章--处理excel电子表格(P218)
- 主要是学习openpyxl模块,因为书本上是2.1版本的,但是现在已经更新到了2.5版本了,期间还是有很多不一样的地方,可以学习openpyxl的文档。
- 2.4版本文档:点击打开链接
- 2.5版本文档:点击打开链接
- 书本上2.1的版本,2.4/2.5有几个不同的地方:
- (1)没有get_highest_row()和get_highest_column()方法,用啥代替没找到
- (2)column_index_string()和get_column_letter()函数在openpyxl.utils.cell模块下
- (3)没有Style对象,worksheet对象有font属性,直接将Font对象赋值即可
- (4)图表也有些不同
第十三章--处理pdf和word文档
- ★PyPDF2没有办法从PDF中提取图像,图标或其他媒体。但它可以提取文本,并将文本返回给python字符串。
- ★处理PDF文档(P244)
- 注意:pdf名字好像不能是中文名,而且会出现以下的错误,不知什么原因:
- ★word文档(P253)
- 利用python-docx模块,python可以创建和修改word文档,但是好像它只能处理.docx文件。注意,在导入python-docx模块的时候是import docx而不是import python-docx。
- ★python-docx用三种不同的类型来表示docx文件,Document对象表示整个文档,Document对象包含一个Paragraph对象的列表,表示文档中的段落,每个Paragrapgh对象对象都包含一个Run对象的列表。一个Run对象就是相同样式文本的延续,当文本的样式发生改变时,就需要一个新的Run对象(简单来说,就是不同样式的字符的分割,例如字体变粗变斜体都会产生新的run对象)。
- ★利用paragraph对象和run对象的style属性可以设置他们的样式,通过run对象的text属性可以进一步设置样式,例如粗体,斜体,下划线等等。(P255-P258)
- ★创建新的docx文件。调用add_paragraph()方法,添加新的段落。调用paragraph对象的add_run()方法可以在段落后面添加新的内容。add_paragraph()和add_run()方法都接受第二个参数,表示paragraph或者run对象的样式。
import docx doc=docx.Document() doc.add_paragraph('hello world','Title') parag2=doc.add_paragraph('this is a test.docx') parag2.add_run('这是parag2新添加的内容') doc.save('test.docx')
- ★添加标题add_heading('header',0),其中参数0-4表示不同的标题样式,其实就是字体的大小不一样。
-
★添加图像add_picture()方法,可选的width和height关键字参数,将设置图像在文档中的宽度和高度。如果省略,则采用默认值。
-
import docx from docx import text,shared doc=docx.Document('test.docx') doc.add_heading('header',0) doc.add_picture('pic.png') #doc.add_picture('pic.png',width=shared.Inches(1),height=shared.Cm(4)) doc.save('test.docx')
第十四章--处理CSV文件和JSON数据
- ★xlsx和csv文件的不同之处
- ★csv文件的特性:
- (1)值没有类型,所有的东西都是字符串
- (2)没有字体大小和颜色的设置
- (3)没有多个工作表
- (4)不能指定单元格的宽度和高度
- (5)不能合并的单元格
- (6)不能嵌入图像或图表
- (7)可以使用文本编辑器打开,以逗号作为单元格的分隔符
- ★Reader对象(P266)
- 用csv模块从csv文件中读取数据,需要创建一个Reader对象,Reader对象可以让你迭代遍历csv文件中的每一行。在Reader对象上应用list()函数,将返回一个列表的列表,每一行是一个列表,而所有的行又组成一个列表,可以通过下标的方式访问值。
- ★循环读取Reader对象的数据
- 调用Reader对象的line_num变量可以显示当前行的编号,注意,Reader对象只能循环遍历一次,要再次读取csv文件,需要调用csv.reader创建新的对象。
import csv file=open('example.csv') reader=csv.reader(file) for row in reader: print('#'+str(reader.line_num)+' '+str(row))
- ★Writer对象(P268)
- Writer对象让你将数据写入csv文件。使用csv.writer()函数创建Writer对象。
- 注意,在windows上,需要为open()函数的newline关键字传入一个空字符串,否则csv中的行距将有两倍。writerow()方法接受一个列表参数,返回字符个数(包括换行字符)
★csv.writer()函数中的参数delimiter和lineterminatorimport csv file=open('output.csv','w',newline='') writer=csv.writer(file) writer.writerow(['a','sdgfasd','dcat','sf']) writer.writerow([1,2,34,2.55,23]) file.close()
- delimiter是文本中的分隔符,分隔符是一行中单元格之间出现的字符。csv默认的分隔符是逗号。
- lineterminator是行终止字符,行终止字符是出现在行末的字符。csv默认的行终止字符是换行符。
import csv file=open('output.csv','w',newline='') writer=csv.writer(file,delimiter='\t',lineterminator='\n\n') writer.writerow(['a','sdgfasd','dcat','sf']) writer.writerow([1,2,34,2.55,23]) file.close()
- ★JSON不能存储每一种python值,它只能包含以下数据类型的值:字符串,整型,浮点型,布尔型,列表和字典和NoneType。JSON不能表示python特有的对象,例如File对象,CSV Reader对象等等。
- ★利用loads()函数将JSON数据的字符串转化为Python的值。注意,JSON字符总是用双引号。
- ★利用dumps()函数将python值转化为JSON格式的字符串。python的值只能是以下类型:字典,列表,整型,浮点型,字符串,布尔型或None。