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

回答編集履歴

1

テキスト修正

2020/03/02 10:42

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -5,4 +5,21 @@
5
5
  ```python3
6
6
  re.sub(r'(?<=_)([0-9]+)(?=.csv$)', lambda m: f'{1+int(m.group(1))}', 'Re_a_img063c.jpg_1.csv') # => Re_a_img063c.jpg_2.csv
7
7
  ```
8
- - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q244615](https://repl.it/@jun68ykt/Q244615)
8
+ - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q244615](https://repl.it/@jun68ykt/Q244615)
9
+
10
+ ### 追記
11
+
12
+ `re.sub` を使わない、別の方法を挙げます。
13
+ ```python3
14
+ ls = re.split(r'([_.])', 'Re_a_img063c.jpg_99.csv')
15
+ ```
16
+ とすると、 `ls` は以下のような内容のリストになります。
17
+
18
+ ```
19
+ ['Re', '_', 'a', '_', 'img063c', '.', 'jpg', '_', '99', '.', 'csv']
20
+ ```
21
+ 上記のリストの、末尾から数えて3個目の要素`'99'`を数値に変換して `1` を加え、再度、文字列に戻してから、すべての要素を連結した文字列にすれば、`Re_a_img063c.jpg_100.csv` が得られます。
22
+
23
+ 以下は、この考え方によるサンプルです。
24
+
25
+ - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q244615-2](https://repl.it/@jun68ykt/Q244615-2)