gpt4 book ai didi

python - 使用 Python 正则表达式从字符串中提取十进制数

转载 作者:行者123 更新时间:2023-11-28 21:03:43 26 4
gpt4 key购买 nike

我使用 Python 的 re 库尝试了这个。从一个文件中,我得到几行包含由条('|')分隔的元素。我将它们放在一个列表中,我需要的是获取其中的数字以便对它们进行操作。

这将是我要拆分的字符串之一:

>>print(line_input)
>>[240, 7821, 0, 12, 605, 0, 3]|[1.5, 7881.25, 0, 543, 876, 0, 121]|[237, 761, 0, 61, 7, 605, 605]

我的意图是用方括号之间的每个元素形成一个向量。

我创建了这个正则表达式

>>test_pattern="\|\[(\d*(\.\d+)?), (\d*(\.\d+)?), (\d*(\.\d+)?)]"

但结果有点困惑。特别地,结果是

>>vectors = re.findall(test_pattern, line_input)

>>print(vectors)
>>[('240', '', '7821', '', '0', '', '12', '', '605', '', '0', '', '3', ''), ('1.5', '.5', '7881.25', '.25', '0', '', '0', '', '0', '', '0', '', '0', ''), ('23437', '', '76611', '', '0', '', '0', '', '0', '', '605', '', '605', '')]

我不明白空格是从哪里来的,也不明白为什么小数部分会重复。我知道我几乎明白了,至少,我确信这是一个简单的小细节,但我不明白。

非常感谢您。

最佳答案

那些空格是可能的空小数。您的 vectors 变量包含所有捕获组,无论是否为空。因此,当有小数时,您将获得外部组 (\d*(\.\d+)?) 的一个匹配项,以及内部组 (\.\d+)?。使内部成为非捕获组:

(\d+(?:\.\d+)?)

注意:我还将其更改为要求小数点前有一个数字(如果有的话)。

关于python - 使用 Python 正则表达式从字符串中提取十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46205807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com