You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何设置文本line wrap、line height、letter spacing及50字符自动换行

Python文本文档批量格式化实现方案

普通纯文本(.txt)文件本身不支持存储行高、字间距这类排版样式,以下提供两种适用不同场景的实现方案


方案1:输出为可保留样式的DOCX文档(推荐)

依赖安装

执行以下命令安装操作docx的库:
pip install python-docx

实现代码

from docx import Document
from docx.shared import Pt
import os

# 可自定义参数
WRAP_LENGTH = 50  # 每行最多字符数
LETTER_SPACING = Pt(1.5)  # 字间距,单位磅
LINE_SPACING = 1.5  # 行高倍数,也可以用Pt(xx)设置固定磅值
INPUT_FOLDER = "./txt_files"  # 存放待处理txt的文件夹
OUTPUT_FOLDER = "./formatted_docs"

# 创建输出文件夹
os.makedirs(OUTPUT_FOLDER, exist_ok=True)

def split_by_length(text, max_len):
    """按最大长度拆分文本,英文不拆单词"""
    words = text.split()
    lines = []
    current_line = []
    current_len = 0
    for word in words:
        word_len = len(word) + 1  # 算上单词后的空格
        if current_len + word_len <= max_len + 1:  # 多减1避免末尾多算空格
            current_line.append(word)
            current_len += word_len
        else:
            lines.append(' '.join(current_line))
            current_line = [word]
            current_len = word_len + 1
    if current_line:
        lines.append(' '.join(current_line))
    return lines

# 批量处理所有txt文件
for filename in os.listdir(INPUT_FOLDER):
    if not filename.endswith(".txt"):
        continue
    # 读取txt内容
    with open(os.path.join(INPUT_FOLDER, filename), 'r', encoding='utf-8') as f:
        content = f.read()
    # 拆分换行
    formatted_lines = split_by_length(content, WRAP_LENGTH)
    # 生成docx
    doc = Document()
    # 设置全局样式
    style = doc.styles['Normal']
    style.paragraph_format.line_spacing = LINE_SPACING
    style.font.spacing = LETTER_SPACING
    # 写入内容
    for line in formatted_lines:
        doc.add_paragraph(line)
    # 保存
    output_name = os.path.splitext(filename)[0] + "_formatted.docx"
    doc.save(os.path.join(OUTPUT_FOLDER, output_name))

方案2:纯TXT模拟排版(无依赖,用字符模拟样式)

如果只能输出txt格式,可通过插入空格模拟字间距、插入空行模拟行高,实现代码如下:

import os

# 自定义参数
WRAP_LENGTH = 50  # 原文本每行最多字符数
LETTER_SPACING_LEVEL = 1  # 字间距等级,1代表每个字符间插1个空格
LINE_SPACING_LEVEL = 1  # 行高等级,1代表每行之间加1个空行
INPUT_FOLDER = "./txt_files"
OUTPUT_FOLDER = "./formatted_txt"

os.makedirs(OUTPUT_FOLDER, exist_ok=True)

def split_by_length(text, max_len):
    lines = []
    for i in range(0, len(text), max_len):
        lines.append(text[i:i+max_len])
    return lines

for filename in os.listdir(INPUT_FOLDER):
    if not filename.endswith(".txt"):
        continue
    with open(os.path.join(INPUT_FOLDER, filename), 'r', encoding='utf-8') as f:
        content = f.read()
    # 拆分换行
    lines = split_by_length(content, WRAP_LENGTH)
    # 处理字间距
    spaced_lines = [' '*LETTER_SPACING_LEVEL.join(list(line)) for line in lines]
    # 处理行高
    final_content = ('\n'*(LINE_SPACING_LEVEL+1)).join(spaced_lines)
    # 保存
    with open(os.path.join(OUTPUT_FOLDER, filename), 'w', encoding='utf-8') as f:
        f.write(final_content)

补充说明

你提供的text.txt示例内容为排版领域常用的无意义占位文本,如有翻译需求可直接使用通用翻译工具处理即可。

内容的提问来源于stack exchange,提问作者montyBoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:36:02