繁体   English   中英

如何编写正则表达式以在Python中获取浮点数?

[英]How to write a regular expression to get floating point numbers in Python?

如何在Python中编写正则表达式以获取浮点数。 我想得到55.97。 来自<td nowrap="nowrap">55.97</td> 所以我给了

newsecond_row_data = (re.search('(?<=>)\d+|\d+.\d+',second_row_data[a]))
newsecond_row_data.group(0)

print newsecond_row_data.group(0)

但它给出了55,而不是55.97。 请帮我

谢谢

如果要从HTML或XML提取数据,请查看可用的各种解析器。 对于这种特殊情况,您可以非常容易地提取数字:

>>> from xml.etree import ElementTree
>>> element = ElementTree.fromstring('<td nowrap="nowrap">55.97</td>')
>>> element.text
'55.97'
>>> 
newsecond_row_data = re.search('\d+\.?\d*', second_row_data[a])
print newsecond_row_data.group(0)
import re

ptn = r'[-+]?([0-9]*\.?[0-9]+)'
pat_obj = re.compile(ptn)

m = pat_obj.search(some_str)
if m:
    print(m.group(0))

如果每个字符串有多个浮点,则使用findall代替match

>>> s = '3dfrtg45.2trghyui8erdftgy77.431dser'

>>> pat_obj = re.compile(ptn)
>>> v = pat_obj.findall(s)
>>> v
  ['3', '45.2', '8', '77.431']
newsecond_row_data = (re.search('(?<=>)\d+.\d+|\d+',second_row_data[a]))
newsecond_row_data.group(0)

您的模式无效的原因是它看到“ 55”,找到一个匹配项并停止进一步搜索。

再一次,我建议不要使用正则表达式,而应使用XML处理库从HTML标签中提取文本(请参见Sudhir的答案)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM