用+/符号分析数字串并保留符号

2024-05-16 20:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一根像这样的线

+0.6810+0.0266-0.0140-0.0111-0.0080-00.026-0.0229+000.84

我需要在每个+/-符号处解析这个字符串,同时将符号与数字保持在一起,以便它们可以存储到变量中。所以我想得到的是七个正数或负数的变量,比如

a= 0.6810
b= 0.0266
c= -0.0140

等等

我能吐出细绳,但现在有一种方法可以转换成一股气流,并保持信号 拆分字符串的当前代码是:

print (re.split(r'[+-]+',dataString))

Tags: 方法字符串代码re信号符号数字split
0条回答
网友
1楼 · 发布于 2024-05-16 20:25:17

如果字符串与您发布的字符串类似,您只需执行以下操作:

your_string.replace('-', '+-').split('+')

但这并不可靠。你知道吗

无论如何,您可以简单地使用re.findall方法。我认为:

re.findall(r'[+-]\d+(\.\d+)?', your_string)

应该会成功的。你知道吗

实际上,它也会匹配整数,如果您的数字在两个站点上都有句点和数字,您可以使用:

r'[+-]\d+\.\d+
网友
2楼 · 发布于 2024-05-16 20:25:17

用分裂代替字符串怎么样?像这样的

print (re.replace(r"([+-])", " \1", dataString)).split()

可能不是最好的方法,但它会做的工作…我想,没有测试它!你知道吗

网友
3楼 · 发布于 2024-05-16 20:25:17

您可以在字符串上使用re.findall:-

>>> string = "+0.6810+0.0266-0.0140-0.0111-0.0080-00.026-0.0229+000.84"
>>> 
>>> import re
>>> matches = re.findall(r'[-+]\d+\.\d+', string)
>>> matches
['+0.6810', '+0.0266', '-0.0140', '-0.0111', '-0.0080', '-00.026', '-0.0229', 
 '+000.84']
>>>
>>> a = float(matches[0])
>>> 0.681

>>> (a, b, c, d, e, f, g) = map(float, matches)[:7]

相关问题 更多 >