用+/-符号解析数字串并保持符号

时间:2012-10-15 19:01:28

标签: python string

我有一个看起来像这样的字符串

+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))

3 个答案:

答案 0 :(得分:3)

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

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

但这并不健全。

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

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

应该这样做。

实际上它也会匹配整数,如果你的数字总是有你可以使用的两个网站上的句号和数字:

r'[+-]\d+\.\d+

答案 1 :(得分:2)

您可以在字符串上使用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]

答案 2 :(得分:0)

用分割替换字符串怎么样?像

这样的东西
print (re.replace(r"([+-])", " \1", dataString)).split()

可能不是最好的方式,但它会完成这项工作......我想,没有测试它!