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

回答編集履歴

1

修正

2018/10/29 04:13

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,44 +1,53 @@
1
- 空文字列と置換し、新しいリストを作れば良いです。
1
+ 空文字列と置換れば良いです。
2
2
  (試験データはcan110さんの回答からお借りしました。)
3
3
  ```Python
4
4
  >>> lst = ['今日の天気は晴:','明日の','天気:は雨']
5
- >>>
6
- >>> dst = []
7
5
  >>> for e in lst:
8
- ... dst.append(
6
+ ... print(
9
7
  ... re.sub('.+:$', '', e)
10
8
  ... )
11
9
  ...
10
+
11
+ 明日の
12
- >>> dst
12
+ 天気:は雨
13
- ['', '明日の', '天気:は雨']
14
13
  ```
15
14
 
16
- リスト内包表記を使うと更簡潔です。
15
+ matchした場合条件分岐る方法もあります
17
16
  ```Python
18
- >>> dst = [
17
+ >>> for e in lst:
19
- ... re.sub('.+:$', '', e) for e in lst
18
+ ... if re.match('.+:$', e):
19
+ ... print('')
20
+ ... else:
21
+ ... print(e)
20
- ... ]
22
+ ...
23
+
24
+ 明日の
21
- >>> dst
25
+ 天気:は雨
22
- ['', '明日の', '天気:は雨']
23
26
  ```
24
27
 
25
28
  ```Python
26
- >>> dst = [
29
+ >>> for e in lst:
30
+ ... print(
27
- ... '' if re.match('.+:$', e) else e
31
+ ... '' if re.match('.+:$', e) else e
28
- ... for e in lst
32
+ ... )
29
- ... ]
33
+ ...
34
+
35
+ 明日の
30
- >>> dst
36
+ 天気:は雨
31
- ['', '明日の', '天気:は雨']
32
37
  ```
33
38
 
34
39
  また、正規表現に拘らないなら、[str.endswith](https://docs.python.jp/3/library/stdtypes.html#str.endswith)が便利です。
35
40
  ```Python
36
- >>> dst = [
41
+ >>> for e in lst:
37
- ... '' if e.endswith(':') else e
42
+ ... print(e.endswith(':'))
38
- ... for e in lst
39
- ... ]
43
+ ...
44
+ True
40
- >>> dst
45
+ False
41
- ['', '明日の', '天気:は雨']
46
+ False
42
47
  ```
43
48
 
44
- ご自身にとって分かり易い方法を選ぶと良いでしょう。
49
+ ご自身にとって分かり易い方法を選ぶと良いでしょう。
50
+
51
+ ついでに
52
+ ---
53
+ ご提示のコードは、Python2系のように見えます。本当に3系の環境で実行できているでしょうか?