有人知道为什么我的python正则表达式搜索只是输出吗;0“;s

有人知道为什么我的python正则表达式搜索只是输出吗;0“;s,python,regex,file,python-3.x,Python,Regex,File,Python 3.x,我正在开发一个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:

我正在开发一个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()
重新导入
KML=开放('NYC\U三州地区.KML','r')
NYC_Coords=open('NYC_Coords.txt','w')
coords=re.findall(r'+(.)+',KML.read())
对于协调中的协调:
纽约大学合作伙伴。写(str(合作伙伴)+“\n”)
KML.close()
纽约大学合作关闭()
我在中的文件上测试了regex,它工作正常

下面是我正在阅读的kml文件的一个小示例:


输出文件包含除最后一行为空之外的每一行上都有一个0的行。

似乎您的组外有
+
运算符

因此,使用
+
时,这将在“一次或多次”之间逐字匹配
,并使用点
与重复捕获组
()+
结合使用,仅捕获最后一次迭代,在这种情况下,对于每个匹配结果
0

删除开头的
+
运算符,并将组外的运算符移到组内

coords = re.findall(r'<coordinates>(.+?)</coordinates>', KML.read())
coords=re.findall(r'(.+?)',KML.read())

注意:使用
+?
为了防止贪婪,您可能还想在此处使用
s
(dotall)修饰符。

旁白:KML是一种XML格式,因此您可以使用标准XML工具解析它,而不是使用regexp。还有一些方便的库可以使使用KML更容易(例如)。谢谢你的提醒,我会去看看的!