回答編集履歴

1

aa

2018/11/01 06:15

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -11,3 +11,55 @@
11
11
  print(lst) # [1, 2, 3]
12
12
 
13
13
  ```
14
+
15
+
16
+
17
+ ## 追記
18
+
19
+
20
+
21
+ ご指摘いただいた通り、符号を含む数値は isdigit() では False になってしまい、駄目でした。標準関数で数値かどうか判断できる関数がないのか探してみたのですが、なさそうですね。
22
+
23
+ can110 さんが提案されたやり方が正着と思われます。
24
+
25
+
26
+
27
+ > str.isdecimal(): 全ての文字が十進数字なら真、そうでなければ偽
28
+
29
+ > 半角・全角のアラビア数字が真
30
+
31
+ > str.isdigit(): 全ての文字が数字なら真、そうでなければ偽
32
+
33
+ > 半角・全角のアラビア数字、特殊数字が真
34
+
35
+ > str.isnumeric(): 全ての文字が数を表す文字なら真、そうでなければ偽
36
+
37
+ > 半角・全角のアラビア数字、特殊数字、漢数字が真
38
+
39
+ [引用元](https://note.nkmk.me/python-str-num-determine/)
40
+
41
+
42
+
43
+ ```python
44
+
45
+ def is_int(v):
46
+
47
+ try:
48
+
49
+ num = int(v)
50
+
51
+ except ValueError:
52
+
53
+ return False
54
+
55
+ return True
56
+
57
+
58
+
59
+ lst = ['1', '-2', 'あいう', '-3', 'a']
60
+
61
+ lst = [int(v) for v in lst if is_int(v)]
62
+
63
+ print(lst) # [1, 2, 3]
64
+
65
+ ```