gpt4 book ai didi

python - 使用 re 在 python 中匹配数字

转载 作者:行者123 更新时间:2023-11-28 20:36:45 24 4
gpt4 key购买 nike

我有很多数据以这种形式写入(从文件中读取):

(31265+0j)
(-5613.54281374+404.957401125j)
(1371.65134844+2671.06617046j)
...

然而我想提取数字部分,比如 [31265, 0][-5613.54281374 , 404.957401125] ,我按照我想的方式用 python 编码它会起作用:

re.findall(r'.*([\+|\-]?\d+.?\d+)([\+|\-]?\d+.?\d+).*', tempStr)

但它不起作用,它给了我这个:

[]
[('26', '5+0')]
[('11', '25')]
...

这是怎么回事?是关于惰性模式的吗?我该如何解决?

========================更新====================== ==对我来说,这个问题已经解决了,但我仍然想知道正则表达式部分有什么问题,有没有人愿意帮我指出正则表达式模式有什么问题?

最佳答案

这些是数字。你不应该在这里使用正则表达式。第一部分是真实的,第二部分是虚构的,你可以像这样访问它们

 n = (-5613.54281374+404.957401125j)
n.real
n.imag

这可能一开始很难发现,因为在数学中我们经常使用 i = sqrt(-1) 但在 python 中它是 j = sqrt(-1) 但是退出有趣的是,如果你这样做

import math
math.sqrt(-1)

你会得到一个ValueError

更新:

如果数据在文件中

with open('complex.txt') as f:
for line in f:
number = complex(line.strip())

更新 2:如果您真的非常非常想使用正则表达式:

 map(float, line[1:-2].split('+'))

如果您的复数部分可能为负数,请改用 re.split()。

关于python - 使用 re 在 python 中匹配数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438995/

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