回答編集履歴

4

細かい修正

2018/02/04 07:25

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -22,9 +22,9 @@
22
22
 
23
23
 
24
24
 
25
- という関係があるため、`u"123".isdecimal()`は両方で動きますが(Python 3系では本来`u`は不要)、
25
+ という関係があるため、`u'234'.isdecimal()`は両方で動きますが(Python 3系では本来`u`は不要)、
26
26
 
27
- `"123".isdecimal()`はPython 2系では`AttributeError`になります。
27
+ `'234'.isdecimal()`はPython 2系では`AttributeError`になります。
28
28
 
29
29
 
30
30
 

3

おまけの追記

2018/02/04 07:25

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -29,3 +29,41 @@
29
29
 
30
30
 
31
31
  [細かい違い](http://kk6.hateblo.jp/entry/20110526/1306395713)はあるみたいですが、アラビア数字だけならば大差ないはずなので、`.isdigit()`で代用すれば良さそうです。
32
+
33
+
34
+
35
+ # おまけ
36
+
37
+
38
+
39
+ `.isdigit()`だと全角でも`True`になってしまうので、半角のアラビア数字だけにマッチする表現を考えてみました。`.isdigit()`で充分かもしれませんが、参考になれば幸いです。
40
+
41
+
42
+
43
+ `len(re.findall(r'^[0-9]+$',target)) != 0`
44
+
45
+
46
+
47
+ 使用例
48
+
49
+
50
+
51
+ ```Python
52
+
53
+ import re
54
+
55
+
56
+
57
+ target = input()
58
+
59
+
60
+
61
+ if len(re.findall(r'^[0-9]+$',target)) != 0:
62
+
63
+ print('number')
64
+
65
+ else:
66
+
67
+ print('not number')
68
+
69
+ ```

2

細かい修正

2018/02/04 07:21

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -12,17 +12,17 @@
12
12
 
13
13
 
14
14
 
15
- Python 2系は文字列≠ユニコード文字列
15
+ という関係があるみたいです。また
16
-
17
- Python 3系は文字列=ユニコード文字列
18
16
 
19
17
 
20
18
 
19
+ - Python 2系は文字列≠ユニコード文字列、
20
+
21
- という関係があるみたいです。
21
+ - Python 3系は文字列=ユニコード文字列
22
22
 
23
23
 
24
24
 
25
- よって`u"123".isdecimal()`は両方で動きますが(Python 3系では本来`u`は不要)、
25
+ という関係があるため、`u"123".isdecimal()`は両方で動きますが(Python 3系では本来`u`は不要)、
26
26
 
27
27
  `"123".isdecimal()`はPython 2系では`AttributeError`になります。
28
28
 

1

追記&修正

2018/02/04 07:08

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -2,8 +2,30 @@
2
2
 
3
3
 
4
4
 
5
- `.isdecimal()`はPython 3系で実装された関数ですから、2.7では動きません。
5
+ ~~`.isdecimal()`はPython 3系で実装された関数ですから、2.7では動きません。~~
6
6
 
7
7
 
8
8
 
9
+ - 文字列 -> `.isdecimal()`なし
10
+
11
+ - ユニコード文字列 -> `.isdecimal()`あり
12
+
13
+
14
+
15
+ Python 2系は文字列≠ユニコード文字列、
16
+
17
+ Python 3系は文字列=ユニコード文字列
18
+
19
+
20
+
21
+ という関係があるみたいです。
22
+
23
+
24
+
25
+ よって`u"123".isdecimal()`は両方で動きますが(Python 3系では本来`u`は不要)、
26
+
27
+ `"123".isdecimal()`はPython 2系では`AttributeError`になります。
28
+
29
+
30
+
9
- [細かい違い](http://kk6.hateblo.jp/entry/20110526/1306395713)はあるみたいですが、2.7で実行したば`.isdigit()`を使いましょう。
31
+ [細かい違い](http://kk6.hateblo.jp/entry/20110526/1306395713)はあるみたいですが、アラビア数字だなら大差ないはずなので、`.isdigit()`で代用すれば良さそです