Я применяю некоторые регулярные выражения к XML-файлу, чтобы найти и заменить значения.Обычно это работает. (Я слышал голоса, говорящие "использовать парсеры xml". Между тем я не могу.) Но если в значении есть специальный символ, он разрушает все.
Думаю, у меня есть xml-файл, как показано ниже:
<fieldset>
<idle1>
<value>something\\n</value>
</idle1>
<idle2>
<value>blabla</value>
</idle2>
</fieldset>
Если я пытаюсь заменить значение в узле "<idle2><value>
", значение узла "<idle1><value>
" становится чем-то \п».И когда дело доходит до записи в файл, xml становится:
<fieldset>
<idle1>
<value>something
</value>
</idle1>
<idle2>
<value>blabla</value>
</idle2>
</fieldset>
Ну и при поиске, и при замене я использую строковый литерал "r".Но, похоже, не работает.Я решаю проблему.Для каждого поиска и замены я заменяю «\ n» на «\\n
», а затем записываю результат в файл.Но это не эффективный способ использования.
Есть что-то, чего я не видел?Я просто хочу написать "\\n
" в файлы.Это так много для меня, что я хочу этого?
Редактировать: вот мои регулярные выражения:
для поиска:
self.searchPattern=(<fieldset>)(.*?)(<idle2>)(.*?)(<value>)(.*?)(</value>)(.*?)(</idle2>)(.*?)(</fieldset>)
для замены:
self.replacePattern=`\g<1>\g<2>\g<3>\g<4><value>denemeasdasd\\\\n</value>\g<8>\g<9>\g<10>\g<11>`
это код Python для поиска:
self.pattern = re.compile(r''''''+self.searchPattern+'''''', flags = re.S | re.U)
и это для замены
outtext = self.pattern.sub(r''''''+self.replacePattern+'''''',r''''''+self.match.group(0)+'''''')