有人知道为什么我的python正则表达式搜索只是输出吗;0“;s
我正在开发一个python程序来提取kml文件中的所有标记有人知道为什么我的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:
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更容易(例如)。谢谢你的提醒,我会去看看的!