我有一个看起来像这样的字符串
+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))
答案 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()
可能不是最好的方式,但它会完成这项工作......我想,没有测试它!