Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中编写正则表达式来获取浮点数?_Python_Regex - Fatal编程技术网

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

如何在Python中编写正则表达式来获取浮点数?,python,regex,Python,Regex,如何在python中编写正则表达式以获取浮点数。我想得到55.97分。从55.97。所以我给了 newsecond_row_data = (re.search('(?<=>)\d+|\d+.\d+',second_row_data[a])) newsecond_row_data.group(0) print newsecond_row_data.group(0) newsecond_row_data=(重新搜索(“(?)\d+\d+。\d+”,第二行数据[a])) 新闻第二行数据

如何在python中编写正则表达式以获取浮点数。我想得到55.97分。从
55.97
。所以我给了

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

print newsecond_row_data.group(0)
newsecond_row_data=(重新搜索(“(?)\d+\d+。\d+”,第二行数据[a]))
新闻第二行数据组(0)
打印新闻第二行数据组(0)
但它给出的是55,而不是55.97。请告诉我

多谢各位

newsecond_row_data = re.search('\d+\.?\d*', second_row_data[a])
print newsecond_row_data.group(0)
如果每个字符串有多个浮点,请使用findall而不是match:


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

>>> from xml.etree import ElementTree
>>> element = ElementTree.fromstring('<td nowrap="nowrap">55.97</td>')
>>> element.text
'55.97'
>>> 
>来自xml.etree导入元素树
>>>element=ElementTree.fromstring('55.97')
>>>element.text
'55.97'
>>> 
新闻第二行数据=(重新搜索(“(?)\d+。\d+)\d+”,第二行数据[a]))
新闻第二行数据组(0)
您的模式不起作用的原因是它看到“55”,找到匹配项并停止进一步搜索


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

请注意,不应使用正则表达式和字符串函数解析HTML。你看,所有这些都合法吗:
1.
.1
1
-1.1
1e-1
?谢谢你的回答,我解决了:)你能不能用粗体写下你对即将到来的“我想用regexp解析xml”的建议?
>>> s = '3dfrtg45.2trghyui8erdftgy77.431dser'

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