将lxml.objectify.StringElement转换为元组时,各个元素仍然是字符串

2024-06-01 09:58:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用pykml的kml解析中的lxml.objectify.StringElement。 分析如下:

with open('btgdbgdgnh.kml') as f:
  documento = parser.parse(f).getroot().Document 

d = {}
for p in documento.Folder:
  d[p.name] = {}
  for place in p.Placemark:
        d[p.name][place.name] = []
        for pol in place.MultiGeometry.Polygon:
            d[p.name[place.name].append(pol.outerBoundaryIs.LinearRing.coordinates)

这种解析的输出如下:

'\n                -0.458304,38.368177,0\n                -0.458486,38.368272,0\n                -0.458679,38.36836,0\n

在与几个kml库进行了斗争之后,我决定采用黑客方法,并尝试自己对其进行格式化,以便为其提供数据,从而创建形状优美的多边形,如下所示:

s='\n                -0.458304,38.368177,0\n      -0.458486,38.368272,0\n                -0.458679,38.36836,0\n

s = s.replace('0\n','0)|(')
s = s.replace('\n','(')
s = " ".join(s.split())
s = s.split('|')

这将呈现此输出:

  ['( -0.458304,38.368177,0)',
 '( -0.458486,38.368272,0)',
 '( -0.465878,38.368924,0)',
 '( -0.468405,38.368941,0)',
 '( -0.472423,38.369025,0)']

我不能把里面的东西转换成简单的元组。我尝试了ast库,但似乎不推荐(?),numpy数组,它似乎是最“pythonic”的,如下所示:

results = np.fromstring(s, dtype=int, sep='|')

但是返回了一个空数组。从一开始我的解决方案似乎不是很好,但这是我第一次使用pykml,所以这是我唯一可以思考的方法,现在我迷路了。 任何帮助都将不胜感激,谢谢


Tags: 方法nameinforplace数组kmllxml