我正在开发一个 python 程序来提取 kml 文件中的所有标签。
import re
KML = open('NYC_Tri-State_Area.kml','r')
NYC_Coords = open('NYC_Coords.txt', 'w')
coords = re.findall(r'<coordinates>+(.)+<\/coordinates>', KML.read())
for coord in coords:
NYC_Coords.write(str(coord) + "\n")
KML.close()
NYC_Coords.close()
我在 RegExr 内的文件上测试了正则表达式并且工作正常。
这是我正在阅读的 kml 文件的一个小样本:http://puu.sh/bhayn/2e233a1033.png
输出文件中每一行都包含一个 0,除了最后一行为空。
最佳答案
看来您已将 +
运算符放置在分组之外。
因此,使用 >+
可以在“一次或多次”之间字面匹配 >
,并使用点 .
与重复捕获结合使用group (.)+
仅捕获最后一次迭代,在本例中,每个匹配结果为 0
。
删除开头的+
运算符,并将放置在组外的运算符移至组内。
coords = re.findall(r'<coordinates>(.+?)</coordinates>', KML.read())
注意:使用 +?
来防止贪婪,您可能还想在此处使用 s
(dotall) 修饰符。
关于python - 谁能明白为什么我的 python 正则表达式搜索只输出 "0"s?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25610961/