Я использую метод .replace, чтобы заменить строчные h на прописные h, но я не хочу заменять первое и последнее вхождения h .. это то, что у меня так далеко:

string = input()
print(string.replace('h', 'H', ?))

Я не уверен, что поставить в качестве последнего аргумента в функции .replace. Заранее спасибо.

0
AntsOfTheSky 31 Авг 2017 в 19:03

4 ответа

Лучший ответ

Попробуй это:

string = input()
substring = string[string.find('h') + 1:]
print(string[:string.find('h') + 1] + substring.replace('h', 'H', substring.count('h') - 1))
1
GLR 31 Авг 2017 в 16:13

Вы можете найти первую и последнюю позицию h и заменить в соединении строки

string = input()
lindex = string.find('h')
rindex = string.rfind('h')
buf_string = string[lindex + 1:rindex]
buf_string.replace('h', 'H')
string = string[:lindex + 1] + buf_string + string[rindex:]
1
Vladyslav 31 Авг 2017 в 16:13

Попробуй это:

st=input()
i=st.index('h')
j=len(st)-1-st[::-1].index('h')
st=st[:i+1]+st[i+1:j].replace("h","H")+st[j:]
print (st)
0
Rohit-Pandey 31 Авг 2017 в 17:26

Вы можете использовать pattern.sub с обратным вызовом, следующее заменяет все h на H, когда они находятся между 2 h

mystring = 'I say hello hello hello hello hello'
pat = re.compile(r'(?<=h)(.+)(?=h)')
res = pat.sub(lambda m: m.group(1).replace(r'h', 'H') , mystring)
print res

< Сильный > Вывод :

I say hello Hello Hello Hello hello
0
Toto 31 Авг 2017 в 16:52