Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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,我使用正则表达式从字符串中解析浮点数 re.findall("[^a-zA-Z:][-+]?\d+[\.]?\d*", t) 是我使用的代码。此代码有问题。如果数字和任何字符之间没有空格,则不会解析数字。 例如,“0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9”的预期输出是[0,1,2,3,4,5,6,7,8,9],但它返回“[| 1,| 2,| 3,…] 有什么方法可以解决这类问题吗?这里最简单的方法就是将正则表达式的“数字”部分包装到捕获组中,然后查看这些捕获组

我使用正则表达式从字符串中解析浮点数

re.findall("[^a-zA-Z:][-+]?\d+[\.]?\d*", t)
是我使用的代码。此代码有问题。如果数字和任何字符之间没有空格,则不会解析数字。 例如,“0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9”的预期输出是[0,1,2,3,4,5,6,7,8,9],但它返回“[| 1,| 2,| 3,…]


有什么方法可以解决这类问题吗?

这里最简单的方法就是将正则表达式的“数字”部分包装到捕获组中,然后查看这些捕获组

re.findall("[^a-zA-Z:]([-+]?\d+[\.]?\d*)", t)
我只是在搜索的“数字”部分加了括号。

使用

re.findall(r"(?<![a-zA-Z:])[-+]?\d*\.?\d+", t)

re.findall(r)(?Try
re.findall(r)[^a-zA-Z:][-+]?\d*.\d+”,t)
或Try
re.findall(r)(?为什么不是更简单的(\d+[\.])+@WiktorStribiżew它正在工作,但不知怎么会丢失第一个数字。如果t是120,它返回20。为什么要使用
?@WiktorStribiżew在字符串中,有一个类似M1,M2的大小写,我想避免使用该大小写中的数字。谢谢。它正在工作,但不知怎的丢失了第一个数字。从示例中,它返回[1,2,3,4,5,6,7,8,9]。是的,这里的问题是,您正在强制匹配中的第一个字符为非字母非冒号,而字符串中的第一个数字前面没有任何字符。您可以向该块添加
,但随后可能会出现其他一些奇怪的行为。我认为您需要提供更全面的示例,以了解您想要添加的内容为了得到一个准确的正则表达式来做你想做的事情,请点击此处。这是带有更改的正则表达式:
[^a-zA-Z:]([-+]?\d+[\.]?\d*)
谢谢,还有最后一个问题。在下面的“3个月摘要:month1:60.5 month2:60.24 month3:60.25”案例中,它将3解析为结果。是否有任何方法可以防止这种情况发生?试试。或者。