我有一个包含以下内容的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)
很接近,但不是真的。它将搜索“deu 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
的行不要浪费时间逐行读取文件。
一次将整个文件读入一个字符串。
使用下面的正则表达式处理字符串,然后重置
文件句柄并将字符串写入文件。你知道吗
优点:
-您有千兆字节的ram
-您可以更改regex以满足将来的任何搜索更改
需要跨行的,例如
\[\s*de_DE\s*\]
,没有需要修改任何语言代码。
-如果您决定解析xml标记而不可能拆分标记内容
基于任何在线信息。
(如果您需要,我可以给您一个正则表达式来完成此任务)
做一个回复sub()使用此
.*<!\[CDATA\[de_DE\]\]>.*(?:\r?\n)?
https://regex101.com/r/xy0AHj/1
相关问题 更多 >
编程相关推荐