Строка Python: как заменить только некоторые числа? - PullRequest
1 голос
/ 01 апреля 2019

Я практиковал некоторые регулярные выражения, используя модуль re. я удивляюсь, как мы можем изменить только некоторые числа из строки.

a1 = 'images1/b100.png'

# required:
a2 = 'images2/b100.png'

Моя попытка:

import re
a1 = 'images1/b100.png'
nums = list(map(int, re.findall(r'\d+', a1)))
num0 = nums[0]
a2 = a1.replace(str(num0), str(num0+1))

Ответы [ 4 ]

2 голосов
/ 01 апреля 2019

Вы можете указать аргумент, чтобы заменить только первый случай.

Изменение:

a2 = a1.replace(str(num0), str(num0+1))

Кому:

a2 = a1.replace(str(num0), str(num0+1), 1)

Как упомянуто здесь: https://docs.python.org/3/library/stdtypes.html

str.replace (old, new [, count])

Возвращает копию строки, в которой все вхождения подстроки old заменены на new. Если указан необязательный аргумент count, заменяются только первые вхождения count.

1 голос
/ 01 апреля 2019

Ниже приведен ответ,

a2.replace("b200","100")

Результат: 'Изображений2 / 100.png'

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы.

1 голос
/ 01 апреля 2019

вы можете ввести:

a2 = a1.replace(str(num0), str(num0+1), 1)
0 голосов
/ 01 апреля 2019
import re
a1 = 'images1/b100.png'
matches = re.match( r'^(.*)(\d+)(\/.*)$', a1)
a2 = matches.group(1)+str(int(matches.group(2))+1)+matches.group(3)

^(.*)(\d+)(\/.*)$: путь, заканчивающийся цифрой и любым именем файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...