解析输出以获取python中的列表

时间:2014-03-10 04:59:07

标签: python list parsing

[u'10.57518117688789', u'43.17174576695126', u'0 10.57512669810526', u'43.17172389657181', u'0 10.57509460784044', u'43.17169116727101', u'0']

我需要把它变成一个从第一个到最后一个顺序的纬度和经度列表。第一个元素是纬度,第二个元素是经度。我不需要你或'0'。

现在,我只是打印它们,但是这个方法需要按顺序返回一个坐标列表。

def get_coord_list_from_earth(filename):

    filename = str(filename)

    data = xml.dom.minidom.parse(filename)

    coordinates = data.getElementsByTagName('coordinates')[0].firstChild.nodeValue
    coordinates = coordinates.strip()

    print coordinates.split(',')

我需要输出这样的列表列表。

[10.57518117688789, 43.17174576695126], [10.57512669810526, 43.17172389657181], [10.57509460784044, 43.17169116727101]

此链接指向需要与

一起运行的示例文件

https://www.dropbox.com/s/8heebhnmlwvjtl7/earthFile.xml

2 个答案:

答案 0 :(得分:2)

可以使用zip轻松完成:

[[float(item[0]), float(item[1])] for item in zip(coordinates[0::2], coordinates[1::2])]

请参阅此处的用法:http://ideone.com/j4O48c

答案 1 :(得分:1)

请你检查一下:

请告诉我这是否适合您:

import xml.dom.minidom

def get_coord_list_from_earth(filename):

    filename = str(filename)

    data = xml.dom.minidom.parse(filename)

    coordinates = data.getElementsByTagName('coordinates')[0].firstChild.nodeValue
    coordinates = str(coordinates.strip())

    lol = list()
    ls = coordinates.split(',')
    for group_ls in zip(ls[0::2], ls[1::2]):
        f = group_ls[0].split()[-1]
        s = group_ls[1].split()[-1]
        # creating list of tuples, if you are not going to mutate it 
        # then tuple is must more memory efficient then list.
        lol.append((f,s))
    return lol

print get_coord_list_from_earth('test.xml')

输出:

[('-99.96592053692414', '35.92662037784583'), ('-99.96540056429473', 
  '35.92663981781373'), ('-99.96498447443297', '35.92665534578857'), 
 ('-99.96454642236132', '35.9264185376019')]