python - 如何在文本文件中搜索某行的内容、替换该行并另存为新文件?
问题描述
我有一个包含以下内容的 xml 文件:
<supported-languages>
<lang><![CDATA[en_US]]></lang>
<lang><![CDATA[es_ES]]></lang>
<lang><![CDATA[de_DE]]></lang>
</supported-languages>
<2ndsupported-languages>
<lang><![CDATA[en_US]]></lang>
<lang><![CDATA[es_ES]]></lang>
<lang><![CDATA[de_DE]]></lang>
</2ndsupported-languages>
我只想删除任何包含de_DE
的行,然后保存文件。
到目前为止,我有这个:
import fileinput
import sys
file = "C:\\Users\Desktop\file.xml"
searchExp = "de_DE"
replaceExp = ""
def replaceAll(file,searchExp,replaceExp):
for line in fileinput.input(file, inplace=1):
line = line.replace(searchExp,replaceExp)
sys.stdout.write(line)
replaceAll(file,searchExp,replaceExp)
关闭,但不是真的。它将搜索“de_DE”,但只会将其替换为<null>
. 这是结果:
<supported-languages>
<lang><![CDATA[en_US]]></lang>
<lang><![CDATA[es_ES]]></lang>
<lang><![CDATA[]]></lang>
</supported-languages>
<2ndsupported-languages>
<lang><![CDATA[en_US]]></lang>
<lang><![CDATA[es_ES]]></lang>
<lang><![CDATA[]]></lang>
</2ndsupported-languages>
我希望我的结果看起来像这样
<supported-languages>
<lang><![CDATA[en_US]]></lang>
<lang><![CDATA[es_ES]]></lang>
</supported-languages>
<2ndsupported-languages>
<lang><![CDATA[en_US]]></lang>
<lang><![CDATA[es_ES]]></lang>
</2ndsupported-languages>
我该怎么做呢?
我试图import re
然后替换pattern
为,
pattern = "^.*de_DE.*$"
但没有奏效。
解决方案
只写不包含子字符串的行searchExp
def replaceAll(file, searchExp):
for line in fileinput.input(file, inplace=1):
if searchExp not in line:
sys.stdout.write(line)
推荐阅读
- vba - 有没有办法开始在某张幻灯片上运行宏
- android - 导航到新活动时,Android Retrofit 连接上的流意外结束
- flutter-web - 得到“抛出另一个异常:'minified:bV的实例
'" 在 web (localhost) 上运行颤振应用程序时 - c# - 收到错误“子报表的数据检索失败,'Subreport1'”
- javascript - NetSuite - 自定义字段 - 分配给地址簿但无法使用 JS 访问
- ember.js - Ember Octane 如何清除表单错误?
- callback - 有没有办法检查 Intent 共享的回调?
- swift - 快速将注释从一个视图传递到另一个视图
- python - 使用索引在列表中搜索 N 个数字并返回索引
- google-cloud-platform - 有没有办法在 GCP 中存储机密,类似于 Azure 保险库?