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

Python翻译文本文件时如何保留原始段落与空格格式

问题根因

你当前代码丢失排版格式的核心原因是line.split()操作会直接丢弃行内所有的空格、制表符等空白字符,且遍历完每一行后没有补回原有的换行符,最终所有内容都变成了用单空格分隔的连续文本。

解决方法

用正则匹配仅替换文本中的单词部分,所有空白、换行、标点等非单词内容全部原样保留,完全不改动原有排版。

修改后完整代码

# 导入依赖
import json
import re

# Step 1: 加载翻译词典
with open('/home/jovyan/english_to_lolspeak_fellow/tranzlashun.json') as translationFile:
    data = json.load(translationFile)
# 统一将词典key转为小写,避免大小写匹配失败
lower_data = {k.lower(): v for k, v in data.items()}

# Step 2: 读取源文件完整内容
with open('/home/jovyan/english_to_lolspeak_fellow/english.txt', 'r', encoding='utf-8') as english_text:
    raw_content = english_text.read()

# Step 3: 仅替换单词,保留所有原始格式
def translate_match(match):
    word = match.group()
    # 小写匹配词典,找不到匹配则返回原单词
    return lower_data.get(word.lower(), word)

# 正则匹配所有由字母组成的单词,其余内容全部原封不动保留
translated_content = re.sub(r'[A-Za-z]+', translate_match, raw_content)

# Step 4: 写入翻译结果,格式和原文完全一致
with open('/home/jovyan/english_to_lolspeak_fellow/lolcat.txt', 'w', encoding='utf-8') as lolcat_file:
    lolcat_file.write(translated_content)

改动说明

  • 不再按行拆分再用split()切割单词,避免丢失空白格式,直接读取全文本做正则替换
  • 用re.sub仅匹配字母组成的单词做翻译替换,所有空格、换行、标点、段落间距都原封不动保留
  • 优化了词典匹配逻辑,统一用小写匹配,避免原单词大小写不一致导致匹配失败
  • 移除了多余的手动关闭文件操作,with上下文管理器会自动处理文件关闭

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:06:02