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

如何在文件每行末尾添加/替换标签?Python代码问题求助

解决文件行替换标签后重复行问题

修正后的代码

tags = ["<p>", "</p>", "<strong>", "</strong>", "<br />", "&nbsp;"]

# 使用with语句自动管理文件资源,无需手动关闭
with open("text.txt", "r") as fr, open("editor.txt", "w") as fe:
    # 写入开头的<p>标签
    fe.write(tags[0])
    for l in fr:
        # 移除每行末尾的换行符,避免生成多余空行
        line = l.rstrip("\n")
        # 替换4个空格为标准的&nbsp;
        processed_line = line.replace("    ", tags[5])
        # 在处理后的行末尾添加<br />换行标签
        fe.write(f"{processed_line}{tags[4]}")
    # 写入结尾的</p>标签
    fe.write(tags[1])

问题原因分析

你当前代码出现重复行的核心原因是循环内执行了两次fe.write():

  1. 第一次写入替换空格后的原行rt
  2. 第二次通过l.join([l.strip() + tags[4]])生成内容并写入,这里join方法用原行作为分隔符连接列表元素(列表仅一个元素),最终会额外输出处理后的行,加上原行自带的换行符,导致每行重复出现

另外还有几个细节问题需要修正:

  • HTML标准换行标签是<br />,而非</br>
  • 空格替换符&nbsp缺少分号,标准写法是&nbsp;
  • 未添加你期望的开头<p>和结尾</p>标签
  • 手动打开文件未处理异常,with语句能自动完成文件的打开/关闭,更安全

验证结果

运行修正后的代码,editor.txt会生成你期望的格式:

<p>$ cat settings.py<br />...<br />DATABASES = {<br />&nbsp;&nbsp;&nbsp;&nbsp;'default': {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#ENGINE': 'django.db.backends.sqlite3',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#NAME': BASE_DIR / 'db.sqlite3',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'ENGINE': 'django.db.backends.postgresql_psycopg2',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'PORT': '5432',<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />...</p>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:05:06