这是针对特定用途的项目。
我试图找到如何从xml中查找任何空文本并将其替换为消息。
regex = re.compile(r'>\s*</')
replaced = re.sub(regex, ">[!] JSON value does not exist, Check your Json!</", temp)
例如文件名为空
<file>
<fileType>Mezza</fileType>
<fileName></fileName>
<segments>0000</segments>
</file>
,输出将是:
<file>
<fileType>Mezza</fileType>
<fileName>[!] value does not exist!</fileName>
<segments>0000</segments>
</file>
但是,对于其他我有空格和换行符的地方,我不想收到此消息,这两个标记名不同,有一个新行,并且它们正在关闭标记,我该如何在regex中实现此功能? / p>
</fileName>[!] value does not exist!</file>
答案 0 :(得分:1)
答案 1 :(得分:0)
也许,我们这里可能遇到的另一种选择是找到filename
,并用可能的表达式替换标签中我们想要的内容,例如:
(<fileName>)(.+)?(<\/fileName>)
如果我正确理解问题。
如果我们有完全空的标签,则此表达式可能会起作用:
(>)()(<\/)
如果我们将使用空标签和带有水平空格的标签,则将其扩展为:
(>)(|[^\S\r\n]+)(<\/)
# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(<fileName>)(.+)?(<\/fileName>)"
test_str = (" <file> \n"
" <fileType>Mezza</fileType>\n"
" <fileName></fileName>\n"
" <segments>0000</segments>\n"
" </file>")
subst = "\\1[!] value does not exist!\\3"
# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)
if result:
print (result)
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.