我有一些行爲良好的xml文件,我想用regex重新格式化(不是PARSE!)。我們的目標是讓每個<trkpt>
配對作爲線索。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循環比瘋狂的正則表達式更簡單,更可讀。 –