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

回答編集履歴

2

修正

2018/10/05 07:54

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,16 +1,23 @@
1
1
  **正規表現**が便利です。
2
2
  ```Python
3
- >>> import re
3
+ import re
4
- >>>
4
+
5
- >>> srcs = '80kg 65kg 72kg 69kg 100kg'.split()
5
+ srcs = '80kg 65.5kg 72W 69km 100t'.split()
6
- >>> for src in srcs:
6
+ for src in srcs:
7
- ... m = re.search(r'(\d+)', src)
7
+ m = re.match(r'^([\d.]+)(\D+)$', src)
8
- ... assert m
8
+ assert m
9
+
9
- ... print(src, int(m.group(1)))
10
+ value, unit = float(m.group(1)), m.group(2)
11
+ print(
12
+ f'{src} -> "{value}", "{unit}"'
13
+ )
10
- ...
14
+ ```
15
+
16
+ **実行結果** [Wandbox](https://wandbox.org/permlink/JLt3qf04LdJF7NlA)
11
- 80kg 80
17
+ ```
18
+ 80kg -> "80.0", "kg"
12
- 65kg 65
19
+ 65.5kg -> "65.5", "kg"
13
- 72kg 72
20
+ 72W -> "72.0", "W"
14
- 69kg 69
21
+ 69km -> "69.0", "km"
15
- 100kg 100
22
+ 100t -> "100.0", "t"
16
23
  ```

1

修正

2018/10/05 07:54

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -4,8 +4,9 @@
4
4
  >>>
5
5
  >>> srcs = '80kg 65kg 72kg 69kg 100kg'.split()
6
6
  >>> for src in srcs:
7
- ... dst = re.match(r'^(\d+)kg$', src).group(1)
7
+ ... m = re.search(r'(\d+)', src)
8
+ ... assert m
8
- ... print(src, dst)
9
+ ... print(src, int(m.group(1)))
9
10
  ...
10
11
  80kg 80
11
12
  65kg 65