質問編集履歴

2

コードを載せました

2019/04/25 14:25

投稿

konataro
konataro

スコア37

test CHANGED
File without changes
test CHANGED
@@ -1,19 +1,87 @@
1
- re.findall()を使いある文字列から正規表現で数字を抽出したのですが、r"(\d)\n|(\d)$"のようなグループを二つ使った正規表現だと下記tes_list_1の入れ子構造リストになってしまいます。
1
+ re.findall()を使いある文字列から正規表現で数字を抽出したのですが、コード内にあるようなグループを二つ使った正規表現だと実行結果aような入れ子構造リストになってしまいます。
2
-
3
- test_list_2のようにするにはどうしたらいいでしょうか。
4
2
 
5
3
 
6
4
 
5
+ これを一番下にあるリストの形にするにはどうしたらいいでしょうか。
6
+
7
7
  どなたか解決方法をお願い致します。
8
+
9
+
10
+
11
+
8
12
 
9
13
  ```Python
10
14
 
11
- test_list_1 = [(10,100),100,200,300]
15
+ import re
12
16
 
13
17
 
14
18
 
15
- # 下のようなリストにしたい
16
19
 
20
+
21
+ strings = """和 123.456789 + 987.654321 = 1111.111110
22
+
23
+ 差 123.456789 - 987.654321 = -864.197532
24
+
17
- test_list_2 = [10,100,100,200,300]
25
+ 積 123.456789 * 987.654321 = 121932.631113
26
+
27
+ 商 123.456789 / 987.654321 = 0.125000"""
28
+
29
+ O =[i for i in range(4)]
30
+
31
+
32
+
33
+
34
+
35
+ def extract(string):
36
+
37
+ extract_value = re.findall(r"(-?\d+.?\d*)\n|(-?\d+.?\d*)$", string)
38
+
39
+ return extract_value
40
+
41
+
42
+
43
+
44
+
45
+ def eval_number(a, b):
46
+
47
+ print(a)
48
+
49
+ print(b)
50
+
51
+ print("len(a):%d, len(b):%d"% (len(a),len(b)))
52
+
53
+ return len(a) == len(b)
54
+
55
+
56
+
57
+ if eval_number(extract_out(strings),O):
58
+
59
+ print("eval_number is true")
60
+
61
+
18
62
 
19
63
  ```
64
+
65
+
66
+
67
+ 実行結果
68
+
69
+ ```実行結果
70
+
71
+ [('1111.111110', ''), ('-864.197532', ''), ('121932.631113', ''), ('', '0.125000')]
72
+
73
+ [0, 1, 2, 3]
74
+
75
+ len(a):4, len(b):4
76
+
77
+ eval_number is true
78
+
79
+ ```
80
+
81
+ aを下のようなリストにしたい。または、この形のリストで抽出したい。
82
+
83
+ ```a
84
+
85
+ [1111.111110,-864.197532,121932.631113,0.1250000]
86
+
87
+ ```

1

初心者マーク

2019/04/25 14:25

投稿

konataro
konataro

スコア37

test CHANGED
File without changes
test CHANGED
File without changes