首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python解析XML文件

问用Python解析XML文件
EN

Stack Overflow用户
提问于 2015-04-16 10:01:41
回答 1查看 980关注 0票数 1

我试图解决这样一个问题: XML数据在同一个文件中有2个时间序列(有时更多)测量值。在这种情况下,温度和风速测量从同一时间间隔。请参阅下面的XML文件:

代码语言:javascript
复制
   <?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection
    timeStamp="2015-04-16T09:40:29Z"
    numberMatched="2"
    numberReturned="2"
           xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:om="http://www.opengis.net/om/2.0"
        xmlns:ompr="http://inspire.ec.europa.eu/schemas/ompr/2.0rc3"
        xmlns:omso="http://inspire.ec.europa.eu/schemas/omso/2.0rc3"
        xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:gmd="http://www.isotc211.org/2005/gmd"
        xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:swe="http://www.opengis.net/swe/2.0"
        xmlns:gmlcov="http://www.opengis.net/gmlcov/1.0"
        xmlns:sam="http://www.opengis.net/sampling/2.0"
        xmlns:sams="http://www.opengis.net/samplingSpatial/2.0"
        xmlns:wml2="http://www.opengis.net/waterml/2.0"
    xmlns:target="http://xml.fmi.fi/namespace/om/atmosphericfeatures/0.95"
        xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd
        http://www.opengis.net/gmlcov/1.0 http://schemas.opengis.net/gmlcov/1.0/gmlcovAll.xsd
        http://www.opengis.net/sampling/2.0 http://schemas.opengis.net/sampling/2.0/samplingFeature.xsd
        http://www.opengis.net/samplingSpatial/2.0 http://schemas.opengis.net/samplingSpatial/2.0/spatialSamplingFeature.xsd
        http://www.opengis.net/swe/2.0 http://schemas.opengis.net/sweCommon/2.0/swe.xsd
        http://inspire.ec.europa.eu/schemas/ompr/2.0rc3 http://inspire.ec.europa.eu/draft-schemas/ompr/2.0rc3/Processes.xsd
        http://inspire.ec.europa.eu/schemas/omso/2.0rc3 http://inspire.ec.europa.eu/draft-schemas/omso/2.0rc3/SpecialisedObservations.xsd
        http://www.opengis.net/waterml/2.0 http://inspire.ec.europa.eu/draft-schemas/waterml/2.0rfc/waterml2.xsd
        http://xml.fmi.fi/namespace/om/atmosphericfeatures/0.95 http://xml.fmi.fi/schema/om/atmosphericfeatures/0.95/atmosphericfeatures.xsd">

        <wfs:member>
                <omso:PointTimeSeriesObservation gml:id="WFS-fip7WVVLMFTJudLNbf8qa6jEiVKJTowqYWbbpdOt.Lnl5dsPTTv3c3Trvlw9NGXk6ddNO3L2w7OuXhh08oWliy59O6pp25bX_0KFCMbHy51qRaFOO6dNGTVwzsu7JU07ctr_6FCiGdm26eenJzrMYsGLBg3Zmzfjw7MtambTfjSV3XpmcNbbh8RNPPph3Y8tK1dCA0tuHxF4b8ejnODHM3tuXpl30MPLDty9MvLnWt0y7eGXlh6deWVrbdPPnp3Z6mXx0rGnYZza3dds_NT6Yemnfu5zhNbj1w7NPTzJ3Zt9Y2_Nma3Pph6ad.6p54Za0N_DLuyYemFuc.m_llyceuXl5v6claYWbbpdOt.Lnl5dsPTTv3c3Trvlw9NGXk6ddNO3L2w7OuXhh08mh007ctPpl4T8hNDpp25bW_dlrGq1IYA-">

                    <om:phenomenonTime>
        <gml:TimePeriod  gml:id="time1-1-1">
          <gml:beginPosition>2015-01-01T00:00:00Z</gml:beginPosition>
          <gml:endPosition>2015-01-02T00:00:00Z</gml:endPosition>
        </gml:TimePeriod>
      </om:phenomenonTime>
      <om:resultTime>
        <gml:TimeInstant gml:id="time2-1-1">
          <gml:timePosition>2015-01-02T00:00:00Z</gml:timePosition>
        </gml:TimeInstant>
      </om:resultTime>      

        <om:procedure xlink:href="http://xml.fmi.fi/inspire/process/opendata"/>
                    <om:parameter>
                <om:NamedValue>
                    <om:name xlink:href="http://inspire.ec.europa.eu/codeList/ProcessParameterValue/value/groundObservation/observationIntent"/>
                    <om:value>
            atmosphere
                    </om:value>
                </om:NamedValue>
            </om:parameter>

                <om:observedProperty  xlink:href="http://data.fmi.fi/fmi-apikey/41156987-d187-45e2-a2d3-6113c39b15ab/meta?observableProperty=observation&amp;param=temperature&amp;language=eng"/>
                <om:featureOfInterest>
                    <sams:SF_SpatialSamplingFeature gml:id="fi-1-1-temperature">
          <sam:sampledFeature>
        <target:LocationCollection gml:id="sampled-target-1-1-temperature">
            <target:member>
            <target:Location gml:id="obsloc-fmisid-101007-pos-temperature">
                <gml:identifier codeSpace="http://xml.fmi.fi/namespace/stationcode/fmisid">101007</gml:identifier>
            <gml:name codeSpace="http://xml.fmi.fi/namespace/locationcode/name">Helsinki Rautatientori</gml:name>
            <gml:name codeSpace="http://xml.fmi.fi/namespace/locationcode/geoid">-16011680</gml:name>
            <gml:name codeSpace="http://xml.fmi.fi/namespace/locationcode/wmo">2934</gml:name>
            <target:representativePoint xlink:href="#point-101007"/>                                    


            <target:region codeSpace="http://xml.fmi.fi/namespace/location/region">Helsinki</target:region>

            </target:Location></target:member>
        </target:LocationCollection>
       </sam:sampledFeature>
                        <sams:shape>

                <gml:Point gml:id="point-1-1-temperature" srsName="http://www.opengis.net/def/crs/EPSG/0/4258" srsDimension="2">
                                <gml:name>Helsinki Rautatientori</gml:name>
                                <gml:pos>60.17169 24.94460 </gml:pos>
                            </gml:Point>

                        </sams:shape>
                    </sams:SF_SpatialSamplingFeature>
                </om:featureOfInterest>
          <om:result>
                    <wml2:MeasurementTimeseries gml:id="obs-obs-1-1-temperature">                         
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T00:00:00Z</wml2:time>
                      <wml2:value>4.6</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T01:00:00Z</wml2:time>
                      <wml2:value>4.5</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T02:00:00Z</wml2:time>
                      <wml2:value>4.2</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T03:00:00Z</wml2:time>
                      <wml2:value>4.0</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T04:00:00Z</wml2:time>
                      <wml2:value>4.1</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T05:00:00Z</wml2:time>
                      <wml2:value>4.1</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T06:00:00Z</wml2:time>
                      <wml2:value>4.5</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T07:00:00Z</wml2:time>
                      <wml2:value>4.1</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T08:00:00Z</wml2:time>
                      <wml2:value>3.3</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T09:00:00Z</wml2:time>
                      <wml2:value>2.9</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T10:00:00Z</wml2:time>
                      <wml2:value>2.5</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T11:00:00Z</wml2:time>
                      <wml2:value>2.4</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T12:00:00Z</wml2:time>
                      <wml2:value>2.5</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T13:00:00Z</wml2:time>
                      <wml2:value>2.7</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T14:00:00Z</wml2:time>
                      <wml2:value>2.8</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T15:00:00Z</wml2:time>
                      <wml2:value>3.1</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T16:00:00Z</wml2:time>
                      <wml2:value>3.3</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T17:00:00Z</wml2:time>
                      <wml2:value>3.7</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T18:00:00Z</wml2:time>
                      <wml2:value>4.1</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T19:00:00Z</wml2:time>
                      <wml2:value>4.1</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T20:00:00Z</wml2:time>
                      <wml2:value>4.4</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T21:00:00Z</wml2:time>
                      <wml2:value>4.7</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T22:00:00Z</wml2:time>
                      <wml2:value>4.6</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T23:00:00Z</wml2:time>
                      <wml2:value>4.7</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-02T00:00:00Z</wml2:time>
                      <wml2:value>4.2</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                         
                    </wml2:MeasurementTimeseries>
                </om:result>

        </omso:PointTimeSeriesObservation>
    </wfs:member>
        <wfs:member>
                <omso:PointTimeSeriesObservation gml:id="WFS-6fPzOlwmFuqLQd1YDR_0qMRemw2JTowqYWbbpdOt.Lnl5dsPTTv3c3Trvlw9NGXk6ddNO3L2w7OuXhh08oWliy59O6pp25bX_0KFCMbHy51qRaFOO6dNGTVwzsu7JU07ctr_6FCiGdm26eenJzrMYsGLBg3Zmzfjw7MtambTfjSV3XpmcNbbh8RNPPph3Y8tK1dCA0tuHxF4b8ejnODHM3tuXpl30MPLDty9MvLnWt307snPhly5NvNrbdPPnp3Z6mXx0rGnYZza3dds_NT6Yemnfu5zhNbj1w7NPTzJ3Zt9Y2_Nma3Pph6ad.6p54Za0N_DLuyYemFuc.m_llyceuXl5v6claYWbbpdOt.Lnl5dsPTTv3c3Trvlw9NGXk6ddNO3L2w7OuXhh08mh007ctPpl4T8hNDpp25bW_dlrGq1IYA-">


      <om:phenomenonTime xlink:href="#time1-1-1"/>
      <om:resultTime xlink:href="#time2-1-1"/>      

        <om:procedure xlink:href="http://xml.fmi.fi/inspire/process/opendata"/>
                    <om:parameter>
                <om:NamedValue>
                    <om:name xlink:href="http://inspire.ec.europa.eu/codeList/ProcessParameterValue/value/groundObservation/observationIntent"/>
                    <om:value>
            atmosphere
                    </om:value>
                </om:NamedValue>
            </om:parameter>

                <om:observedProperty  xlink:href="http://data.fmi.fi/fmi-apikey/41156987-d187-45e2-a2d3-6113c39b15ab/meta?observableProperty=observation&amp;param=windspeedms&amp;language=eng"/>
                <om:featureOfInterest>
                    <sams:SF_SpatialSamplingFeature gml:id="fi-1-1-windspeedms">
          <sam:sampledFeature>
        <target:LocationCollection gml:id="sampled-target-1-1-windspeedms">
            <target:member>
            <target:Location gml:id="obsloc-fmisid-101007-pos-windspeedms">
                <gml:identifier codeSpace="http://xml.fmi.fi/namespace/stationcode/fmisid">101007</gml:identifier>
            <gml:name codeSpace="http://xml.fmi.fi/namespace/locationcode/name">Helsinki Rautatientori</gml:name>
            <gml:name codeSpace="http://xml.fmi.fi/namespace/locationcode/geoid">-16011680</gml:name>
            <gml:name codeSpace="http://xml.fmi.fi/namespace/locationcode/wmo">2934</gml:name>
            <target:representativePoint xlink:href="#point-101007"/>                                    


            <target:region codeSpace="http://xml.fmi.fi/namespace/location/region">Helsinki</target:region>

            </target:Location></target:member>
        </target:LocationCollection>
       </sam:sampledFeature>
                        <sams:shape>

                <gml:Point gml:id="point-1-1-windspeedms" srsName="http://www.opengis.net/def/crs/EPSG/0/4258" srsDimension="2">
                                <gml:name>Helsinki Rautatientori</gml:name>
                                <gml:pos>60.17169 24.94460 </gml:pos>
                            </gml:Point>

                        </sams:shape>
                    </sams:SF_SpatialSamplingFeature>
                </om:featureOfInterest>
          <om:result>
                    <wml2:MeasurementTimeseries gml:id="obs-obs-1-1-windspeedms">                         
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T00:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T01:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T02:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T03:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T04:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T05:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T06:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T07:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T08:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T09:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T10:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T11:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T12:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T13:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T14:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T15:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T16:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T17:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T18:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T19:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T20:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T21:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T22:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-01T23:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                          
                        <wml2:point>
                            <wml2:MeasurementTVP> 
                                      <wml2:time>2015-01-02T00:00:00Z</wml2:time>
                      <wml2:value>NaN</wml2:value>
                            </wml2:MeasurementTVP>
                        </wml2:point>                         
                    </wml2:MeasurementTimeseries>
                </om:result>

        </omso:PointTimeSeriesObservation>
    </wfs:member>
</wfs:FeatureCollection>

数据嵌套在<wml2:MeasurementTimeseries gml:id="obs-obs-1-1-temperature"> for the temperature and within <wml2:MeasurementTimeseries gml:id="obs-obs-1-1-windspeedms">中,用于风速(在此文件中为NaN)。

我想单独迭代这些系列,并将它们以表格格式保存到.txt文件中。我能够保存时代系列的数据,但我不能把它们按列分开。到time\temp\\风速格式。

如果XML文件只有一个度量(分别为temp或风速),则当前的代码可以工作,因为我只需要遍历该文件。

代码语言:javascript
复制
import xml.etree.cElementTree as ET

tree = ET.ElementTree(file='XML_file.xml')
def parser(item1,item2):
    return item1.text,item2.text

data = [parser(item1,item2) for item1,item2 in zip(tree.iter(tag='{http://www.opengis.net/waterml/2.0}time'),tree.iter(tag='{http://www.opengis.net/waterml/2.0}value'))]



with open('data.txt', 'w') as fp:
        fp.write('\n'.join('%s|%s' % x for x in data))

由于对temp和ws的度量是相同的长度,我如何迭代它们(可能是不同的标记?)并返回每个时间点的元组。(time,temp value, winds speed value)

编辑:这将打印结果。但是,如果我添加像这个i.iter(tag='{http://www.opengis.net/waterml/2.0}MeasurementTimeseries')这样的标记,我就得到了TypeError: iter() takes no keyword arguments。

代码语言:javascript
复制
for i in tree.iter(tag='{http://www.opengis.net/waterml/2.0}MeasurementTimeseries'):
    for j in i.iter():
        print j.text

这些指纹:

代码语言:javascript
复制
2015-01-01T00:00:00Z
4.6




2015-01-01T01:00:00Z
4.5
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-16 10:24:40

我认为您所要求的是:与其在文件中的任何位置查找所有的时间和值标记,不如只在温度标签下找到时间和值标记。(然后,对时间和值标记只在风速标签下做同样的事情,然后将两者拉链在一起,但是如果有第一部分的话,您可以自己完成这一部分。)

要做到这一点,您需要嵌套搜索。

您可以使用两个搜索显式地这样做--例如,在两个MeasurementTimeseries上迭代,然后在每个time和value后代上迭代:

代码语言:javascript
复制
def parse_one_series(series):
    return [parser(item1,item2) for item1,item2 in
            zip(series.iter(tag='{http://www.opengis.net/waterml/2.0}time'),
                series.iter(tag='{http://www.opengis.net/waterml/2.0}value'))]

data = zip(*(parse_one_series(series) for series in
           tree.iter(tag='{http://www.opengis.net/waterml/2.0}MeasurementTimeseries')))

现在,数据中的每个元素都是一对对,第一个是时间和温度,第二个是时间和风速。尽管您可能希望组织得更好一些:

代码语言:javascript
复制
data = [(time, temp, wind) for (time, temp), (_, wind) in data]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29671395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档