python操作pdf、word、csv

1 python读取word文本

import docx
'''
pip install --user -U python-docx
docx文档在python-docx中有3种不同的类型:Document对象表示整个文档;
Document对象包含一个Paragraph对象的列表表示文档种的段落;
每个paragraph对象都都包含一个Run对象的列表。
1个Run对象是相同样式文本的延续,当文本样式发生改变时,就需要一个新的Run对象。
'''
#  打开1个.docx文档
doc = docx.Document('test.docx')
# 该文档共有几个Paragraph对象,每个Paragraph对象都有1个text属性,该属性包含段落中文本的字符串没有样式信息
print(len(doc.paragraphs))
print(doc.paragraphs[0].text)
print(doc.paragraphs[1].text)
# 每个Paragraph对象也都有1个runs属性,Run对象也有一个text属性
for i in range(len(doc.paragraphs[1].runs)):
    print(doc.paragraphs[1].runs[i].text)

print('-'*80)
# 从.docx文档中取得完整的文本
def getText(filename):
    doc = docx.Document(filename)
    fullText = []
    for para in doc.paragraphs:
        fullText.append(para.text)
    return '\n'.join(fullText)
# 若让每一段缩进,就将append()替换为 fullText.append('   '+para.text)
# 要在段落之前增加空行,就将join()调用替换为: return '\n\n'.join(fullText)
print(getText('test.docx'))

2 创建带有非默认样式的Word文档

Run 对象的text属性

属性描述
bold文本以粗体出现
italic文本以斜体出现
underline文本带下划线
strike文本带删除线
double_strike文本带双删除线
all_caps文本以大写字母出现
small_caps文本以大写字母出现,但大小和小写字母一样
shadow文本带阴影
outline文本以轮廓出现,而不是以实心出现
rtl文本从右至左书写
imprint文本以刻入页面的方式出现
emboss文本以凸出页面的方式出现
import docx
'''
创建带有非默认样式的Word文档
如果想要创建的Word文档使用默认样式以外的样式,就需要打开1个空白Word文档,创建新样式。
再用docx.Document()打开这个空白文档,将它作为Word文档的基础
'''

'''
Run属性
通过text属性,Run可以进一步设置样式。每个属性都可以被设置为3个值之一:
True(该属性总是启用,不论其他样式是否应用于该Run)、
False(该属性总是禁用)、
None(默认使用该Run被设置的任何属性)
'''

doc = docx.Document('test.docx')
print(doc.paragraphs[0].text)
print(doc.paragraphs[0].style)
print(doc.paragraphs[1].text)
# doc.paragraphs[1].runs[0].style = 'QuoteChar'
doc.paragraphs[1].runs[1].shadow = True
doc.paragraphs[1].runs[2].underline = True
doc.save('newWord.docx')

3 在word文档中插入标题、段落、图片

import docx
from docx.shared import Pt, RGBColor, Inches
from docx.oxml.ns import qn
'''
word添加标题、在指定位置出增加段落及图片
add_heading()的参数是一个标题文本的字符串,以及1个从0到4的整数。
整数0表示标题是Title样式,这用于文档的顶部。
整数1到4是不同的标题层次,add_heading()返回的是一个Paragraph对象。
'''

doc = docx.Document()
doc.add_heading('Header 0', 0)
doc.add_heading('Header 1', 1)
doc.add_heading('Header 2', 2)
doc.add_heading('Header 3', 3)
doc.add_heading('Header 4', 4)
doc.save('add.docx')

doc = docx.Document()
doc.add_heading('Header 0', 0)
doc.add_heading('Header 1', 1)
doc.add_heading('Header 1.1', 2)
doc.add_heading('Header 1.1.1', 3)
doc.add_heading('Header 1.2', 2)
doc.add_heading('Header 1.2.1', 3)
run = doc.add_heading("", level=3).add_run("1.2.2 三级标题")
# 设置西文字体
run.font.name = u'宋体'
# 设置中文字体
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
# 设置字体颜色
run.font.color.rgb = RGBColor(255, 55, 55)  # 红色
# 设置字体大小
run.font.size = Pt(30)
# 设置下划线
run.font.underline = True
# 设置删除线
run.font.strike = True
# 设置加粗
run.bold = True
# 设置斜体
run.italic = True

for para in doc.paragraphs:
    # 指定位置出插入段落,并设置段落样式
    if para.text in ['Header 1.2']:
        # 段前插入
        p1 = para.insert_paragraph_before('这是插入的一个段落')        # 继续添加文字
        run = p1.add_run("段落中的文字")
        run.font.size = Pt(10.5)
        run.font.name = u'宋体'
        run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

# 在文档最后插入
doc.add_paragraph('这是插入的第二个段落')

# 在文档指定位置中插入图片
for para in doc.paragraphs:
    if para.text in ['Header 1.2.1']:
        p2 = para.insert_paragraph_before('这是插入的第一张图片')
        run2 = p2.add_run('\n')
        run2.add_picture('./img/landscape.jpeg', width=Inches(6.0), height=Inches(4.0))
doc.save('add1.docx')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值