概述
处理CSV,PDF,Word模块
- 处理CSV
- CSV文档特点
- 步骤
- 注意事项
- 处理PDF和Word
- 处理PDF
- 处理Word
python处理csvpdf都需要先采用open函数打开文件,但是不能在open()返回的file对象上直接调用read()或readlines()方法,需要将它传递给reader()函数后,再对这个函数返回的对象进行操作。
处理CSV
CSV文档特点
• 值没有类型,所有东西都是字符串;
• 没有字体大小或颜色的设置;
• 没有多个工作表;
• 不能指定单元格的宽度和高度;
• 不能合并单元格;
• 不能嵌入图像或图表。
步骤
# 以原文书本的一个项目示例进行
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关键字用来设置两倍行距
示例代码:
exampleReader = 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、常用操作:
pdfFileObj = open('aaa.pdf','rb') #二进制模式打开文件
pfdReader=PyPDF2.PdfFileReader(pdfFileObj) #将Obj传递给reader函数
#对reader对象进行操作
pdfReader.decrypt('code') #对加密的文档传入密码进行解密
pdfReader.numPages #PDF文件总页数
pdfReader.getPage(0).extractText() #获得第一页page中的文本内容,文本提取并不完美
项目:创建PDF:
#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()方法只能够在末尾添加页面。
page.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
常用操作
import 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 编程快速上手-让繁琐工作自动化-处理CSV,PDF,Word模块处理CSV处理PDF和Word所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复