回答編集履歴
1
aa
answer
CHANGED
@@ -4,4 +4,30 @@
|
|
4
4
|
lst = ['1', '2', 'あいう', '3', 'a']
|
5
5
|
lst = [int(v) for v in lst if v.isdigit()]
|
6
6
|
print(lst) # [1, 2, 3]
|
7
|
+
```
|
8
|
+
|
9
|
+
## 追記
|
10
|
+
|
11
|
+
ご指摘いただいた通り、符号を含む数値は isdigit() では False になってしまい、駄目でした。標準関数で数値かどうか判断できる関数がないのか探してみたのですが、なさそうですね。
|
12
|
+
can110 さんが提案されたやり方が正着と思われます。
|
13
|
+
|
14
|
+
> str.isdecimal(): 全ての文字が十進数字なら真、そうでなければ偽
|
15
|
+
> 半角・全角のアラビア数字が真
|
16
|
+
> str.isdigit(): 全ての文字が数字なら真、そうでなければ偽
|
17
|
+
> 半角・全角のアラビア数字、特殊数字が真
|
18
|
+
> str.isnumeric(): 全ての文字が数を表す文字なら真、そうでなければ偽
|
19
|
+
> 半角・全角のアラビア数字、特殊数字、漢数字が真
|
20
|
+
[引用元](https://note.nkmk.me/python-str-num-determine/)
|
21
|
+
|
22
|
+
```python
|
23
|
+
def is_int(v):
|
24
|
+
try:
|
25
|
+
num = int(v)
|
26
|
+
except ValueError:
|
27
|
+
return False
|
28
|
+
return True
|
29
|
+
|
30
|
+
lst = ['1', '-2', 'あいう', '-3', 'a']
|
31
|
+
lst = [int(v) for v in lst if is_int(v)]
|
32
|
+
print(lst) # [1, 2, 3]
|
7
33
|
```
|