首页 > 解决方案 > 如何从字符串中提取整个小数?

问题描述

我正在解析一封电子邮件并尝试从电子邮件中获取数值。我的算法将电子邮件拆分为一个由空格分隔的数组,然后从该数组中提取值。问题是 html 被拾取,所以数组中的一个元素看起来像这样

   pre-wrap;">32.35</pre>  
   </td>  
   </tr>  

我只想提取数字并尝试将其过滤掉,但它忽略了小数

这是方法

extractedValue = ''.join(filter(lambda i: i.isdigit(), firstString)) 

这将返回 3235 并忽略小数。

解决这个问题的方法是什么?

标签: pythonparsing

解决方案


如评论中所述,这是使用正则表达式的方法

re.search(r'(\d+\.\d+)', firstString).group(1)

事实上,我们可以使用它.group()来获取整个匹配,从而为您节省一些击键。

foo = re.search("foo", sometring).group()
bar = re.search("bar", something).group()

如果搜索不匹配,则返回 None,因此这将扩展到None.group()which raises AttributeError,因此您可以捕获AttributeError任何不匹配

try:
    foo = re.search("foo", sometring).group()
    bar = re.search("bar", something).group()
except AttributeError:
    pass
    # something went wrong

所以你可以达到同样的结果re.search(r'\d+\.\d+', firstString).group()

我希望这会有所帮助,问候


推荐阅读