Reputation: 23
My objective is to replace the 0th string element with another string element. I tried the below code.
s='12:15:45'
s=s.replace(s[0],'9')
print(s)
While the 0th element does get replaced, the change is also reflected on the 3rd element.
output- 92:95:45
Why is this happening ?
Upvotes: 1
Views: 2529
Reputation: 1455
Pass count of occurrance.
string.replace(oldvalue, newvalue, count)
oldvalue
Required. The string to search fornewvalue
Required. The string to replace the old value with countcount
Optional. A number specifying how many occurrences of the old value you want
to replace. Default is all occurrencess=s.replace(s[0],'9',1)
print(s)
Upvotes: 1
Reputation: 6234
use s.replace(s[0],'9', 1)
to replace only the first occurrence.
str.replace(old, new, count)
Return a copy of the string with all occurrences of substringold
replaced bynew
. If the optional argumentcount
is given, only the firstcount
occurrences are replaced.
Upvotes: 1
Reputation: 14233
As stated in the docs:
str.replace(old, new[, count]) - Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.
You don't specify count
, so it replace all occurrences of s[0]
- in this case '1'
. In this particular case you can do
s = '12:15:45'
s = s.replace(s[0],'9',1)
print(s)
but it will not work always - e.g. if you want to replace only s[3]
Upvotes: 1
Reputation: 958
The replace function by default is replacing all the occurrences of 1
in the string. You can limit this using the correct syntax as below
Syntax
string.replace(oldvalue, newvalue, count)
If you want only the first occurrence to get replaced you should use
s=s.replace(s[0],'9',1)
Upvotes: 2