2016-04-06 8 views
0

私は次の行が含まれているtxtファイルを持っているが含まれ、正規表現検索:数字、ドット、多分文字とマイナス記号

<KEY key="Metric" keyvalue="VALUE (Base)">523.876481542546</KEY> 
    <KEY key="Metric" keyvalue="VALUE (Base)">1.41186111749407E-05</KEY> 

を私は正規表現を使用して、上から数字を抽出したいです。数字には科学的表記法が含まれてもよい。 1.41186111749407E-05。 これまでのところ、私は(私のPythonスクリプトで)試してみました:これは、出力できます

count = 0 
    for i, line in enumerate(searchlines): 
     if '"VALUE (Base)">' in line: 
      for line in searchlines[i:i+1]: 
       m = re.search(r'\d+\.\d+', line) 
       count = count + 1 
       if count == 1: 
        m1 = m.group() 
       if count == 2: 
        m2 = m.group() 

m1 = 523.876481542546 
m2 = 1.41186111749407 

を私がしたい:

は正規表現私は何である
m2 = 1.41186111749407E-05 

'E'とマイナス記号 ' - 'の場合を処理する必要がありますか?

+1

XMLファイルがあるようです。あなたはlxmlやelementtree(std lib)を考えましたか? –

+2

@WayneWerner [Indeed!](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –

答えて

0

これは、数字で始まり小数点を持つタグのすべてを取得します。

import re 
REGEX = re.compile("^<.*?>(\d*\..*)<.*?>$") 

あなたが持っていない番号をお持ちの場合は、XMLデータのためのXMLパーサを使用していないのはなぜ小数は

import re 
REGEX = re.compile("^<.*?>(\d*|\d*\..*)<.*?>$") 
2

を行います。例えば、Pythonの標準ライブラリからxml.etree.ElementTree:あなたは小数と小数を持っていないものを持っている数字のためにそれを行う必要があり、再文字列

re.search("\d+\.*\d*[E]*[-]*\d*",line) 

を使用する場合

$ cat input.xml 
<KEYS> 
    <KEY key="Metric" keyvalue="VALUE (Base)">523.876481542546</KEY> 
    <KEY key="Metric" keyvalue="VALUE (Base)">1.41186111749407E-05</KEY> 
</KEYS> 

>>> import xml.etree.ElementTree as ET 
>>> tree = ET.parse("input.xml") 
>>> [key.text for key in tree.findall("KEY")] 
['523.876481542546', '1.41186111749407E-05'] 
0

は私が考えて

この正規表現テスターを使って正規表現をテストすることができます。http://pythex.org/

関連する問題