re.findall()を使いある文字列から正規表現で数字を抽出したのですが、コード内にあるようなグループを二つ使った正規表現だと実行結果aのような入れ子構造リストになってしまいます。
これを一番下にあるリストの形にするにはどうしたらいいでしょうか。
どなたか解決方法をお願い致します。
Python
1import re 2 3 4strings = """和 123.456789 + 987.654321 = 1111.111110 5差 123.456789 - 987.654321 = -864.197532 6積 123.456789 * 987.654321 = 121932.631113 7商 123.456789 / 987.654321 = 0.125000""" 8O =[i for i in range(4)] 9 10 11def extract(string): 12 extract_value = re.findall(r"(-?\d+.?\d*)\n|(-?\d+.?\d*)$", string) 13 return extract_value 14 15 16def eval_number(a, b): 17 print(a) 18 print(b) 19 print("len(a):%d, len(b):%d"% (len(a),len(b))) 20 return len(a) == len(b) 21 22if eval_number(extract_out(strings),O): 23 print("eval_number is true") 24
実行結果
[('1111.111110', ''), ('-864.197532', ''), ('121932.631113', ''), ('', '0.125000')] [0, 1, 2, 3] len(a):4, len(b):4 eval_number is true
aを下のようなリストにしたい。または、この形のリストで抽出したい。
a
1[1111.111110,-864.197532,121932.631113,0.1250000]
回答2件
あなたの回答
tips
プレビュー