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

Python写入JSON文件时内容重复、换行符失效问题求助

问题分析与修复

问题原因拆解

  1. 内容重复

    • 错误使用text += text + line.strip(),每次循环都会把当前text内容复制一遍再追加新行,导致内容重复翻倍。
    • 分两次打开日志文件,第一次仅记录最后一条Hostname:行;第二次循环中每次匹配到Found controller就写入文件,且每次都基于错误累加的text操作,最终造成重复内容。
  2. 换行异常

    • json.dump()写入字符串时会自动转义特殊字符(比如\n会被转成\\n),直接查看JSON文件会看到\n文本而非实际换行。
    • 用带缩进的三引号添加换行,会把缩进空格带入字符串,导致输出出现多余缩进。

修复后的代码

import json

json_file_name = 'HOSTANDIPINFO.json'
target_lines = []

# 一次性读取日志,收集所有需要的行
with open('xdate_debug.log', 'r') as log_file:
    for line in log_file:
        clean_line = line.strip()
        # 同时匹配Hostname和Found controller的行
        if 'Hostname:' in clean_line or 'Found controller' in clean_line:
            print(clean_line)
            target_lines.append(clean_line)

# 用换行符拼接所有行
result_text = '\n'.join(target_lines)

# 方案1:直接写入纯文本文件(完全符合你要的换行格式)
with open('HOSTANDIPINFO.txt', 'w') as txt_file:
    txt_file.write(result_text)

# 方案2:写入JSON文件(存储为带换行的字符串,读取时需用json.load解析)
with open(json_file_name, 'w') as json_file:
    json.dump(result_text, json_file)

修复说明

  • 用列表收集所有目标行,最后通过'\n'.join()拼接,既避免重复累加问题,又保证换行正确。
  • 若不需要JSON格式,优先用方案1写入纯文本,直接得到每行独立显示的效果。
  • 若必须用JSON存储,写入的字符串包含\n,后续用json.load()读取后打印,会自动解析为换行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:02:30