0

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

+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

ETC

我能够吐出字符串,但现在一种转换为流并保持符号当前代码拆分字符串的方法是:

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

3 回答 3

3

如果字符串与您发布的字符串一样,您可以简单地执行以下操作:

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

但这并不稳健。

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

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

应该做的伎俩。

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

r'[+-]\d+\.\d+
于 2012-10-15T19:03:01.620 回答
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]
于 2012-10-15T19:07:04.887 回答
0

用拆分替换字符串怎么样?就像是

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

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

于 2012-10-15T19:06:52.880 回答