У меня есть XML с некоторыми несоответствующими тегами ENAMEX
, которые я пытаюсь удалить
<Subject stype="ORG" xref="1234">
<SubjectFullName type="L"><ENAMEX type="ORGANIZATION" id="ORG-112233-000">WEBSITE.COM</SubjectFullName>
<SubjectLastName type="L">WEBSITE.COM</ENAMEX></SubjectLastName>
<SubjectPhone type="Work">1234567890</SubjectPhone>
</Subject>
Я попытался следующий код
mm = 'ENAMEX'
extra_tag_search = f"</{mm}><"
add_closing_tag_search = f"<{mm}(?!.*</{mm}>)(.*)"
add_closing_tag_replace = f"<{mm}>\1</{mm}>"
ffx = re.sub(extra_tag_search, "<", ff)
fff = re.sub(add_closing_tag_search, add_closing_tag_replace, ffx)
, но он только исправляет одна проблема при создании другой - WEBSITE.COM
исчезла, и теперь SubjectFullName
не имеет закрывающего тега.
<Subject stype="ORG" xref="1234">
<SubjectFullName type="L"><ENAMEX></ENAMEX>
<SubjectLastName type="L">WEBSITE.COM</SubjectLastName>
<SubjectPhone type="Work">1234567890</SubjectPhone>
</Subject>
В конечном счете, мне действительно не нужен этот тег ENAMEX
, поэтому я хотел бы просто удалить его из xml, только если у него нет конечного тега. Мой код позаботился об удалении лишнего тега ENAMEX
в SubjectLastName
, но я борюсь с правильным регулярным выражением, чтобы удалить его из тега SubjectFullName
, не удаляя при этом также WEBSITE.COM</SubjectFullName>
. Я попытался заменить на \1
, но это, очевидно, не работает и просто оставляет этот странный квадратный символ. В конечном счете, я хотел бы закончить с
<Subject stype="ORG" xref="1234">
<SubjectFullName type="L">WEBSITE.COM</SubjectFullName>
<SubjectLastName type="L">WEBSITE.COM</SubjectLastName>
<SubjectPhone type="Work">1234567890</SubjectPhone>
</Subject>