2017-08-31 1 views
0

J'utilise la méthode .replace pour remplacer cas h du bas avec des années h supérieure de cas, mais je ne veux pas remplacer les premières et les dernières occurrences h de .. c'est ce que j'ai jusqu'à présent:Comment remplacez-vous chaque occurrence d'une lettre dans une chaîne en dehors du premier et du dernier?

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

Je ne sais pas quoi mettre comme dernier argument dans la fonction .replace. Merci d'avance.

Répondre

1

Essayez celui-ci:

string = input() 
substring = string[string.find('h') + 1:] 
print(string[:string.find('h') + 1] + substring.replace('h', 'H', substring.count('h') - 1)) 
1

Vous pouvez trouver la première et la dernière position de h et remplacer dans épissure de chaîne

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:] 
0

Essayez celui-ci:

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

Vous pourriez utiliser pattern.sub avec un rappel, ce qui suit remplace tous h par H quand ils sont entre 2 s »

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 

sortie:

I say hello Hello Hello Hello hello