找到一个正则表达式,其中包括数字,点,也许还有一个字母和减号

2024-06-02 14:01:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下行的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”和减号“-”的情况?你知道吗


Tags: keyinforbaseifvaluecountline
3条回答

这将得到标签中所有以数字开头并带有小数的内容。你知道吗

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

如果你有没有小数的数字,你可以

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

我想如果你用重弦

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

对于有小数点的和没有小数点的数字应该是这样的

您可以使用这样的正则表达式测试工具来测试正则表达式:http://pythex.org/

为什么不为XML数据使用XML解析器。例如,Python标准库中的^{}

$ 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']

相关问题 更多 >