如何在文件每行末尾添加/替换标签?Python代码问题求助
解决文件行替换标签后重复行问题
修正后的代码
tags = ["<p>", "</p>", "<strong>", "</strong>", "<br />", " "] # 使用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个空格为标准的 processed_line = line.replace(" ", tags[5]) # 在处理后的行末尾添加<br />换行标签 fe.write(f"{processed_line}{tags[4]}") # 写入结尾的</p>标签 fe.write(tags[1])
问题原因分析
你当前代码出现重复行的核心原因是循环内执行了两次fe.write():
- 第一次写入替换空格后的原行
rt - 第二次通过
l.join([l.strip() + tags[4]])生成内容并写入,这里join方法用原行作为分隔符连接列表元素(列表仅一个元素),最终会额外输出处理后的行,加上原行自带的换行符,导致每行重复出现
另外还有几个细节问题需要修正:
- HTML标准换行标签是
<br />,而非</br> - 空格替换符
 缺少分号,标准写法是 - 未添加你期望的开头
<p>和结尾</p>标签 - 手动打开文件未处理异常,
with语句能自动完成文件的打开/关闭,更安全
验证结果
运行修正后的代码,editor.txt会生成你期望的格式:
<p>$ cat settings.py<br />...<br />DATABASES = {<br /> 'default': {<br /> #ENGINE': 'django.db.backends.sqlite3',<br /> #NAME': BASE_DIR / 'db.sqlite3',<br /> 'ENGINE': 'django.db.backends.postgresql_psycopg2',<br /> 'PORT': '5432',<br /> }<br />}<br />...</p>
内容的提问来源于stack exchange,提问作者Dato
相关产品推荐
相关产品推荐

