정규식을 사용하여 형식을 바꾸려는 (잘된 것은 아닙니다!) 올바른 형식의 XML 파일이 있습니다. 목표는 모든 <trkpt>
쌍을 oneliner로 유지하는 것입니다.패턴 일치 내에서 공백을 제거하는 Python 정규식
다음 코드는 작동하지만 루프 대신 단일 정규식 대체에서 수행 된 작업을 가져와 문자열을 다시 연결할 필요가 없습니다.
import re
xml = """
<trkseg>
<trkpt lon="-51.2220657617" lat="-30.1072524581">
<time>2012-08-25T10:20:44Z</time>
<ele>0</ele>
</trkpt>
<trkpt lon="-51.2220657617" lat="-30.1072524581">
<time>2012-08-25T10:20:44Z</time>
<ele>0</ele>
</trkpt>
<trkpt lon="-51.2220657617" lat="-30.1072524581">
<time>2012-08-25T10:20:44Z</time>
<ele>0</ele>
</trkpt>
</trkseg>
"""
for trkpt in re.findall('<trkpt.*?</trkpt>', xml, re.DOTALL):
print re.sub('>\s*<', '><', trkpt, re.DOTALL)
sed
를 사용하는 대답도 환영받을 것입니다. 이것은 당신이 요청하지만, 여기에 한 줄 인의 이익을위한 한 줄의 있었는지 정말 아니다
그것은'trkseg' 또는 한 줄로 원하는'trkpt'인가? 'trkseg'라고 말하지만 정규 표현식은'trkpt'에서 작동합니다 ... – KRyan
또한 그 중 어떤 식 으로든 해당 유형의 중첩 태그를 가질 수 없다고 가정합니다. 당신이 둥지를 짓 자마자, 정규식은 그것을 처리 할 수 없을 것입니다. – KRyan
이것이 "빠르고 더러운"스크립트이고, XML을 구문 분석하고 싶지 않다면, for 루프는 더 간단하고 미친 정규식보다 훨씬 더 읽기 쉽다고 말할 수 있습니다. –