###前提・実現したいこと
XMLファイルで、指定した文字列を検索し、その位置情報を取得したい。
###発生している問題・エラーメッセージ
以下、インプットのXMLファイルのrankの値が1の部分の行番号を取得したい。
※.find("指定した文字列")で、行頭から何文字目かは分かった。
###インプットのXMLファイル
Python
1<?xml version="1.0"?> 2<data> 3 <country name="Liechtenstein"> 4 <rank>1</rank> 5 <year>2008</year> 6 <gdppc>141100</gdppc> 7 <neighbor name="Austria" direction="E"/> 8 <neighbor name="Switzerland" direction="W"/> 9 </country> 10 <country name="Singapore"> 11 <rank>4</rank> 12 <year>2011</year> 13 <gdppc>59900</gdppc> 14 <neighbor name="Malaysia" direction="N"/> 15 </country> 16 <country name="Panama"> 17 <rank>68</rank> 18 <year>2011</year> 19 <gdppc>13600</gdppc> 20 <neighbor name="Costa Rica" direction="W"/> 21 <neighbor name="Colombia" direction="E"/> 22 </country> 23</data>
###編集ファイル
Python
1# -*- coding: utf-8 -*- 2f = open('country_data.xml', 'r')# inputファイル'country_data.xml'を読み込み、変数textに代入 3text = f.read() 4f.close 5import xml.etree.ElementTree as ET# XML parser のimport 6root = ET.fromstring(text) 7import inspect 8for rank in root.findall("./country/rank"): 9 if rank.text == '1': 10 print text.find(rank.text) # =>15 11 print inspect.currentframe().f_lineno # =>11
###試したこと
上記のように、
inspect をimportし、
print inspect.currentframe().f_line
とすると、XMLファイル内ではなく、この編集ファイルの何行目か(11行目)と出力されてしまうことを確認した。
###補足情報(言語/FW/ツール等のバージョンなど)
使用言語:Python
回答1件
あなたの回答
tips
プレビュー