回答編集履歴

2

質問を誤解していたので別解

2020/04/11 23:19

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -73,3 +73,75 @@
73
73
  ```
74
74
 
75
75
  どちらが軽いか(速いか?)は自分で測定してみてください。
76
+
77
+
78
+
79
+ **追記**
80
+
81
+ 質問を「与えられた文字列の中に、数字列が1個所だけあればその数字列を返し、
82
+
83
+ 数字列が無いまたは2個所以上ある場合は何も返さない」だと誤解していました。
84
+
85
+
86
+
87
+ 数字列が必ず1個所だけある文字列が与えられるのですね。
88
+
89
+
90
+
91
+ ```Python
92
+
93
+ import re
94
+
95
+
96
+
97
+ pat = re.compile(r"\D")
98
+
99
+
100
+
101
+ a = [ '1yen', '23dogs', 'there is 45 dogs' ]
102
+
103
+ r = [ pat.sub("", s) for s in a ]
104
+
105
+ print(a)
106
+
107
+ print(r)
108
+
109
+ ```
110
+
111
+ 正規表現を使わないで、数字列の開始点と終了点を探すと、
112
+
113
+ ```Python
114
+
115
+ def match(s):
116
+
117
+ a = -1
118
+
119
+ b = n = len(s);
120
+
121
+ for i in range(n):
122
+
123
+ if s[i].isdigit():
124
+
125
+ if a < 0:
126
+
127
+ a = i
128
+
129
+ elif a >= 0:
130
+
131
+ b = i
132
+
133
+ break
134
+
135
+ return s[a:b]
136
+
137
+
138
+
139
+ a = [ '1yen', '23dogs', 'there is 45 dogs' ]
140
+
141
+ r = [ match(s) for s in a ]
142
+
143
+ print(a)
144
+
145
+ print(r)
146
+
147
+ ```

1

不要なセミコロンの削除

2020/04/11 23:19

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  a = -1
8
8
 
9
- b = n = len(s);
9
+ b = n = len(s)
10
10
 
11
11
  for i in range(n):
12
12