質問編集履歴
2
コードを載せました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,19 +1,87 @@
|
|
1
|
-
re.findall()を使いある文字列から正規表現で数字を抽出したのですが、
|
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
|
-
|
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
|
-
|
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
初心者マーク
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|