0

私はこのような文字列を持っています

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

この文字列を+/-記号ごとに解析すると同時に、記号を数値とともに保持して、変数に格納できるようにする必要があります。だから私が出てきたいのは、次のような7つの正または負の数のそれぞれのvarialbesです

a= 0.6810
b= 0.0266
c= -0.0140

文字列を吐き出すことはできますが、フローに変換し、現在のコードの符号を文字列を分割するように維持する方法は次のとおりです。

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 に答える