我的知识记录

Python Word设置段落对齐与行距教程

用python-docx设置Word段落对齐方式(居中/左右对齐/两端对齐)、首行缩进、行间距、段前段后间距,批量统一文档排版规范。

场景痛点

拿到一批排版混乱的Word文档,有的段落左对齐有的居中,行距忽大忽小,首行缩进有的有有的没有,看起来很不专业。手动逐段调整对齐和行距,几十份文档改下来手指都酸了。用python-docx可以批量设置所有段落的对齐方式、行距、首行缩进,一键统一整篇文档排版。

用到的库

pip install python-docx

完整代码

# 导入库
from docx import Document
from docx.shared import Pt, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_LINE_SPACING

def set_paragraph_format(para, alignment='justify',
first_line_indent=None,
line_spacing=1.5,
space_before=0, space_after=0):
"""
设置段落格式
alignment: left/center/right/justify
first_line_indent: 首行缩进,单位字符,None不设
line_spacing: 行距,倍数或固定值磅
space_before: 段前间距,单位磅
space_after: 段后间距,单位磅
"""
pf = para.paragraph_format

# 对齐方式
align_map = {
'left': WD_ALIGN_PARAGRAPH.LEFT,
'center': WD_ALIGN_PARAGRAPH.CENTER,
'right': WD_ALIGN_PARAGRAPH.RIGHT,
'justify': WD_ALIGN_PARAGRAPH.JUSTIFY,  # 两端对齐
}
pf.alignment = align_map.get(alignment, WD_ALIGN_PARAGRAPH.JUSTIFY)

# 首行缩进(2字符 = 约0.74厘米,按小四字号计算)
if first_line_indent:
# 1字符约等于0.37厘米(小四字号下)
pf.first_line_indent = Cm(first_line_indent * 0.37)

# 行距:多倍行距
pf.line_spacing_rule = WD_LINE_SPACING.MULTIPLE
pf.line_spacing = line_spacing

# 段前段后
pf.space_before = Pt(space_before)
pf.space_after = Pt(space_after)

def format_all_paragraphs(input_path, output_path):
"""批量设置文档所有段落格式"""
doc = Document(input_path)

for para in doc.paragraphs:
# 跳过空段落
if not para.text.strip():
continue

# 跳过标题(标题样式单独处理)
style_name = para.style.name if para.style else ''
if style_name.startswith('Heading') or style_name.startswith('标题'):
# 标题:居中,段前段后间距大
set_paragraph_format(
para,
alignment='center',
first_line_indent=None,
line_spacing=1.5,
space_before=12,
space_after=6
)
else:
# 正文:两端对齐,首行缩进2字符,1.5倍行距
set_paragraph_format(
para,
alignment='justify',
first_line_indent=2,  # 首行缩进2字符
line_spacing=1.5,
space_before=0,
space_after=0
)

# 表格里的段落也统一格式
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
for para in cell.paragraphs:
set_paragraph_format(
para,
alignment='center',
line_spacing=1.15
)

doc.save(output_path)
print(f'排版完成:{output_path}')

if __name__ == '__main__':
format_all_paragraphs('demo.docx', '排版后_demo.docx')

代码讲解

  • para.paragraph_format拿到段落格式对象,所有对齐、缩进、行距都在这里设置。
  • WD_ALIGN_PARAGRAPH.JUSTIFY是两端对齐,Word正文最常用的方式;CENTER居中;LEFT左对齐;RIGHT右对齐。
  • 首行缩进用first_line_indent = Cm(0.74),中文2字符大约是0.74厘米(对应小四字号),不同字号下1字符宽度不同,这里按常用正文字号估算。
  • 行距有两种设置方式:line_spacing = 1.5是1.5倍行距;如果要固定值28磅,用line_spacing_rule = WD_LINE_SPACING.EXACTLY + line_spacing = Pt(28)
  • 代码里区分了标题和正文:标题居中、段前12磅段后6磅;正文两端对齐、首行缩进2字符、1.5倍行距;表格内文字居中、1.15倍行距,符合常规公文排版规范。

运行结果

运行脚本后生成排版后_demo.docx,打开可以看到所有正文段落自动首行缩进2字符、两端对齐、1.5倍行距;所有标题居中、上下有间距;表格内文字居中对齐,整篇文档排版统一规范。

注意事项

  • 首行缩进的厘米数和字号有关,小四字号下1字符约0.37厘米,三号字号下约0.42厘米,按你文档实际字号调整。
  • 行距设为多倍行距时,行高会随字号自动调整;设为固定值时,字号太大可能显示不全。
  • 标题如果用了Word内置Heading样式,直接改paragraph_format会覆盖样式默认值,效果直接生效。
  • 空段落不设置格式,避免产生多余空白行。

Python Word设置段落对齐与行距教程

标签:

更新时间:2026-09-14 21:45:16

上一篇:Python Word批量删除空行方法

下一篇:Python Word设置页面边距纸张大小教程