質問するログイン新規登録

回答編集履歴

1

追記

2019/10/24 09:56

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -37,4 +37,41 @@
37
37
  (((AAA,BBB),CCC),DDD)
38
38
  (EEE,FFF)
39
39
  ((((AAA,BBB),CCC),DDD), (EEE,FFF))
40
+ ```
41
+
42
+ 追記: 邪道
43
+ ---
44
+ 思い付いたので書きました。真似はしない方が良いです。
45
+ ```Python
46
+ import ast
47
+ import re
48
+
49
+
50
+ src = r'((((AAA,BBB),CCC),DDD), (EEE,FFF))'
51
+ src = re.sub(r'(\w+)', r'"\1"', src)
52
+
53
+ work = [ast.literal_eval(src)]
54
+ dst = []
55
+
56
+ while work:
57
+ tmp = work.pop()
58
+ dst.append(tmp)
59
+
60
+ work += [e for e in tmp if isinstance(e, tuple)]
61
+
62
+
63
+ dst = [
64
+ str(e).replace('"', '').replace("'", "")
65
+ for e in reversed(dst)
66
+ ]
67
+ print(*dst, sep='\n')
68
+ ```
69
+
70
+ **実行結果** [Wandbox](https://wandbox.org/permlink/D3vRE8IVoels0cka)
71
+ ```
72
+ (AAA, BBB)
73
+ ((AAA, BBB), CCC)
74
+ (((AAA, BBB), CCC), DDD)
75
+ (EEE, FFF)
76
+ ((((AAA, BBB), CCC), DDD), (EEE, FFF))
40
77
  ```