处理CSV,PDF,Word模块
- 处理CSV
- CSV文档特点
- 步骤
- 注意事项
- 处理PDF和Word
- 处理PDF
- 处理Word
python处理csvpdf都需要先采用open函数打开文件,但是不能在open()返回的file对象上直接调用read()或readlines()方法,需要将它传递给reader()函数后,再对这个函数返回的对象进行操作。
处理CSV
CSV文档特点
• 值没有类型,所有东西都是字符串;
• 没有字体大小或颜色的设置;
• 没有多个工作表;
• 不能指定单元格的宽度和高度;
• 不能合并单元格;
• 不能嵌入图像或图表。
步骤
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# 以原文书本的一个项目示例进行 import csv,os #csv是python自带模块,不需要安装,os是目录操作模块 os.makdirs('headerRemoved',exist_ok=True) #当前目录下创建一个名字为headerRemoved的新文件夹 for csvFileName in os.listdir('.'): #遍历循环当前路径下的所有文件 if csvFileName.endwith('.csv'): #如果文件后缀名是csv,则返回TRUE,继续下一步操作 csvRows = [] #创建一个空列表 csvFileObj = open(csvFileName) #打开文件对象 readObj = csv.reader(csvFileObj) #必须有这两步,reader不能直接读取文件名,open函数返回的对象也不能直接进行读取操作 for row in readerObj: if readerObj.line_num == 1: #项目要求,去除首行 continue #是第一行就返回for循环进行,否则向下运行程序 csvRows.append(row) #将内容存放到列表中 csvFileObj.close() #关闭open函数打开的对象,该部分往上是读取csv内容的常用操作 # 往下为往csv文件内写入内容常用操作 csvFileObj = open(os.path.join('headRemoved',csvFileName),'w',newline='') #用写模式创建一个新的文件对象,必须加上newline='',否则行间会多出一个空白行 csvWriter = csv.Writer(csvFileObj) #原理同reader操作步 for row in csvRows: #遍历循环列表 csvWriter.writerow(row) #csv写入文件只能逐行写入 csvFileObj.close() #关闭对象
注意事项
1、csv文件类型是文本文件
2、要用csv 模块读取CSV 文件,首先用open()函数打开它,就像打开任何其他文本文件一样。但是,不用在open()返回的File 对象上调用read()或readlines()方法,而是将它传递给csv.reader()函数。这将返回一个Reader 对象,供使用。请注意,不能直接将文件名字符串传递给csv.reader()函数。
3、要访问Reader 对象中的值,最直接的方法,就是将它转换成一个普通Python 列表,即将它传递给list()。在这个Reader 对象上应用list()函数,将返回一个列表的列表。用表达式exampleData[row][col]来访问特定行和列的值。 这种方式是一次性读取所有内容到内存
4、对于大文件,需要用for循环来获得reader对象。Reader 对象只能循环遍历一次。要再次读取CSV 文件,必须调用csv.reader,创建一个对象
5、csv默认用逗号分隔单元格,可以采用delimiter关键字用制表符代替逗号,lineterminator关键字用来设置两倍行距
示例代码:
1
2
3
4
5exampleReader = csv.reader(exampleFile) #创建reader对象 exampleData = list(exampleReader) #将reader对象中的值转化为列表 exampleData[0][0] #代表A1位置的内容 csvWriter = csv.writer(csvFile,delimiter='t',lineterminator='nn')
处理PDF和Word
python处理PDF和Word是不完美的,功能有限
处理PDF
1、模块:PyPDF2
PyPDF2只能提取PDF中的文本,没法提取图像、图表等其他媒体
python打开PDF和Word文件时,需要以读二进制模式(rb、wb)
PyPDF2 写入PDF 的能力,仅限于从其他PDF 中拷贝页面、旋转页面、重叠页面和加密文件。
2、常用操作:
1
2
3
4
5
6
7pdfFileObj = open('aaa.pdf','rb') #二进制模式打开文件 pfdReader=PyPDF2.PdfFileReader(pdfFileObj) #将Obj传递给reader函数 #对reader对象进行操作 pdfReader.decrypt('code') #对加密的文档传入密码进行解密 pdfReader.numPages #PDF文件总页数 pdfReader.getPage(0).extractText() #获得第一页page中的文本内容,文本提取并不完美
项目:创建PDF:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#1.打开一个或多个已有的PDF(源PDF),得到PdfFileReader 对象。 pdf1File=open('meeting1','rb') pdf2File=open('meeting2','rb') pdf1Reader=PyPDF2.PdfFileReader(pdf1File) pdf2Reader=pyPDF2.PdfFileReader(pdf2File) #2.创建一个新的PdfFileWriter 对象。 pdfWriter=PyPDF2.PdfFileWriter() #3.将页面从PdfFileReader 对象拷贝到PdfFileWriter 对象中。 for pageNum in range(pdf1Reader.numPages): pageObj=pdf1Reader.getPage(pageNum) pdfWriter.addPage(pageObj) for pageNum in range(pdf2Reader.numPages): pageObj=pdf2Reader.getPage(pageNum) pdfWriter.addPage(pageObj) #4.最后,利用PdfFileWriter 对象写入输出的PDF。 pdfOutputFile=open('combination.pdf','wb') pdfWriter.write(pdfOutputFile) #5、关闭文件 pdfOutputFile.close() pdf1File.close() pdf2File.close()
PyPDF2 不能在PdfFileWriter 对象中间插入页面,addPage()方法只能够在末尾添加页面。
1
2
3
4page.rotateClockwise(90) #将页面旋转90度。利用rotateClockwise()和rotateCounterClockwise()方法,PDF文档的页面可以旋转90°的整数倍,即90、180、270度 firstPage.mergePage(secondPage) #将第二页叠加到第一页上,常用来在页面上添加公司标志、时间戳或水印 pdfWriter.encrypt('usrcode','ownercode') #对PDF加密,第一个参数是使用者密码,可以查看,第二个是拥有者密码,可以修改PDF,如果只传入一个参数,则使用者和拥有者密码相同。
处理Word
安装模块pip install python-docx
导入模块 import docx
常用操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23import docx #导入模块 doc = docx.Document('demo.docx') #打开demo文件 len(doc.paragraphs)#文件的段落数 doc.paragraphs[0].text #第一个段落内容len(doc.paragraphs[1].runs) #第二个段落所包含的样式 # 创建一个getText()函数,用来取得Word文档中的文本 def getText(filename): doc = docx.Document(filename) fullText = [] for para in doc.paragraphs: fullText.append(para.txt) #本句可替换为fullText.append(' '+para.text)用来让每一段缩进 return 'n',join(fullText) doc = docx.Document() #创建一个新的空白Word文档对象 doc.add_paragraph('hello world') #在文档中增加新文本 paraObj1 = doc.add_paragraph('This is the second para.') paraObj2 = doc.add_paragraph('This is the third para.') paraObj1.add_run('This text is being added to the second para.') #在某段后面再增加新的内容 doc.save('helloworld.docx') #保存 #新的Paragraph 对象只能添加在文档的末尾,新的Run 对象只能添加在Paragraph 对象的末尾。 doc.add_heading('Header 0','0') #add_heading()添加一个段落,并使用一种标题样式。add_heading()的参数,是一个标题文本的字符串,以及一个从0 到4 的整数。整数0 表示标题是Title 样式,这用于文档的顶部。整数1 到4 是不同的标题层次,1是主要的标题,4 是最低层的子标题。add_heading()返回一个Paragraph 对象
最后
以上就是仁爱戒指最近收集整理的关于Python 编程快速上手-让繁琐工作自动化-处理CSV,PDF,Word模块处理CSV处理PDF和Word的全部内容,更多相关Python内容请搜索靠谱客的其他文章。
发表评论 取消回复