2017-03-14 22 views
-2

私はtxtファイルからいくつかの情報を抽出しようとしていますが、分割後、私はリストの最初の位置にしかアクセスできません。 誰もが理想を持っていますか?私のリストの位置にアクセスすることができません

マイtxtファイルは次のようである:

<?xml version='1.0' encoding='UTF-8'?> 
<osm version="0.6" generator="osmconvert 0.8.4" timestamp="2017-03-06T01:59:59Z"> 
    <bounds minlat="43.48" minlon="-79.7899999" maxlat="43.92" maxlon="-78.9999997"/> 
    <node id="699540" lat="43.6751621" lon="-79.361332" version="1"/> 
    <node id="699569" lat="43.7247576" lon="-79.3302633" version="1"/> 
    <node id="1497736" lat="43.731285" lon="-79.3304523" version="1"/> 
    <node id="1497764" lat="43.7412456" lon="-79.332082" version="1"/> 
    <node id="1497766" lat="43.7418685" lon="-79.3321184" version="1"/> 
    <node id="1497768" lat="43.7450436" lon="-79.3327357" version="1"/> 
    <node id="1497773" lat="43.7459924" lon="-79.3329589" version="1"/> 
    <node id="1497776" lat="43.747316" lon="-79.3332228" version="1"/> 
    <node id="1497778" lat="43.7484115" lon="-79.3333255" version="1"/> 

と私のコード:助けを

import re 
contador = 0 

pattern = re.compile("node") 

with open('toronto1.txt') as text: 
print("leu Arquivo") 
with open('saida.txt', 'w') as saida: 
    print("criou arquivo") 
    for text_line in text: 
     comparacao = re.search(pattern, text_line) 
     if comparacao is not None: 
      node_line = text_line 
      split_id = re.findall(r"[\w']+", node_line) 
      saida.write(split_id[2]+'\n')   
      contador = contador + 1 
    print contador 
    saida.close() 
text.close() 

a = split_id[2] 

print node_line 
print split_id 
print a 

THX。

+1

インデントを修正してください。 –

+1

おそらく、 're.findall'によって返されるリストは1つのマッチを見つけるだけなので、あなたのリストは1つの要素しか持たないでしょう。私はあなたが何を期待しているのかわかりません... –

+1

正規表現でXMLを解析しようとしなくて、代わりにDOMパーサを使用してください。 [this post](http://stackoverflow.com/a/1732454/62576)を参照してください。 –

答えて

0

私は確かに大きな行が1つしかないファイルを取得していて、ループを閉じるために/ nを使用しているので、一度しか取得できません。

他の誰かがあなたに語って、それが想定されているとおりに解析します。

関連する問題