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

回答編集履歴

2

追記

2019/11/13 10:11

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -48,4 +48,5 @@
48
48
  ```
49
49
 
50
50
  ---
51
- どちらも泥臭いですけれど、関数に押し込めば充分使えそうです。
51
+ 泥臭いですけれど、関数に押し込めば充分使えそうです。
52
+ どちらの方法も、文字列の仮置きを介さないという意味ではご提示の方法に勝ります。

1

追記

2019/11/13 10:11

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,4 +1,6 @@
1
1
  ぱっと思い付いた方法です。もっと良いやり方があるかもしれません。
2
+
3
+ #### **目的の文字列で分割する方法**
2
4
  ```Python
3
5
  sample = 'abcXXXdefXXXghiXXXjkl'
4
6
  f = 'XXX'
@@ -22,4 +24,28 @@
22
24
  abcXXXdefXXXghiXXXjkl
23
25
  ```
24
26
 
27
+ #### **str.findでゴリ押す方法**
28
+ ```Python
29
+ sample = 'abcXXXdefXXXghiXXXjkl'
30
+ f = 'XXX'
31
+ t = '---'
32
+
33
+ for n in range(1, 5):
34
+ pos = -1
35
+ for i in range(n):
36
+ pos = sample.find(f, pos+1)
37
+
38
+ dst = sample[:pos] + sample[pos:].replace(f, t, 1)
39
+ print(dst)
40
+ ```
41
+
42
+ **実行結果** [Wandbox](https://wandbox.org/permlink/iyL8hylXOBBqfOHX)
43
+ ```plain
44
+ abc---defXXXghiXXXjkl
45
+ abcXXXdef---ghiXXXjkl
46
+ abcXXXdefXXXghi---jkl
47
+ abcXXXdefXXXghiXXXjkl
48
+ ```
49
+
50
+ ---
25
- 泥臭いですけれど、関数に押し込めば充分使えそうです。
51
+ どちらも泥臭いですけれど、関数に押し込めば充分使えそうです。