xml 파일에 정규 표현식을 적용하여 값을 찾아서 바꿉니다. 일반적으로 작동합니다. ("XML 파서 사용"이라는 목소리가 들려 왔지만 그럴 수는 없습니다.)하지만 값에 특수 문자가 있으면 모든 것이 파손됩니다.파이썬에 의한 regexp의 특수 문자 문제
<fieldset>
<idle1>
<value>something\\n</value>
</idle1>
<idle2>
<value>blabla</value>
</idle2>
</fieldset>
나는 "<idle2><value>
"노드 값 "<idle1><value>
"노드가된다 "뭔가 \ n을"의 값을 대체하려고하면 :
<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.pattern = re.compile(r''''''+self.searchPattern+'''''', flags = re.S | re.U)
:
self.replacePattern=`\g<1>\g<2>\g<3>\g<4><value>denemeasdasd\\\\n</value>\g<8>\g<9>\g<10>\g<11>`
이 검색의 파이썬 코드 여기 내 정규식 등에서 특정 요소를 뽑아 오기가 '있다
그리고 이것은 replac을위한 것입니다. ing
outtext = self.pattern.sub(r''''''+self.replacePattern+'''''',r''''''+self.match.group(0)+'''''')
이것은 나를 도울 수 있습니다. 고맙습니다. – savruk
@savruk 고맙습니다. 정말 좋은 대답이고 가장 좋은 답변이라면 삼각형의 하향식 버튼 아래에있는 흰 갈매기 버튼을 클릭하여 수락 할 수 있습니다. 그것은 10 대신에 25 포인트에 응답합니다. – eyquem
@savruk Thanks. 나는 포인트에 사로 잡히지 않지만, 어리 석음을 너무 많이 걱정하지 않고 다른 대답에 대해 싫어하는 것을 허락하는 데 허용하고있다 (예, 나는 바보 같은 대답을했다) – eyquem