Add string in a certain position in Python
Is there any function in Python that I can use to insert a value in a certain position of a string?
Something like this:
"3655879ACB6" then in position 4 add
"-" to become
No. Python Strings are immutable.
>>> s='355879ACB6' >>> s[4:4] = '-' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
It is, however, possible to create a new string that has the inserted character:
>>> s[:4] + '-' + s[4:] '3558-79ACB6'
Read more... Read less...
This seems very easy:
>>> hash = "355879ACB6" >>> hash = hash[:4] + '-' + hash[4:] >>> print hash 3558-79ACB6
However if you like something like a function do as this:
def insert_dash(string, index): return string[:index] + '-' + string[index:] print insert_dash("355879ACB6", 5)
As strings are immutable another way to do this would be to turn the string into a list, which can then be indexed and modified without any slicing trickery. However, to get the list back to a string you'd have to use
.join() using an empty string.
>>> hash = '355879ACB6' >>> hashlist = list(hash) >>> hashlist.insert(4, '-') >>> ''.join(hashlist) '3558-79ACB6'
I am not sure how this compares as far as performance, but I do feel it's easier on the eyes than the other solutions. ;-)
Simple function to accomplish this:
def insert_str(string, str_to_insert, index): return string[:index] + str_to_insert + string[index:]
I have made a very useful method to add a string in a certain position in Python:
def insertChar(mystring, position, chartoinsert ): longi = len(mystring) mystring = mystring[:position] + chartoinsert + mystring[position:] return mystring
a = "Jorgesys was here!" def insertChar(mystring, position, chartoinsert ): longi = len(mystring) mystring = mystring[:position] + chartoinsert + mystring[position:] return mystring #Inserting some characters with a defined position: print(insertChar(a,0, '-')) print(insertChar(a,9, '@')) print(insertChar(a,14, '%'))
we will have as an output:
-Jorgesys was here! Jorgesys @was here! Jorgesys was h%ere!
I think the above answers are fine, but I would explain that there are some unexpected-but-good side effects to them...
def insert(string_s, insert_s, pos_i=0): return string_s[:pos_i] + insert_s + string_s[pos_i:]
If the index pos_i is very small (too negative), the insert string gets prepended. If too long, the insert string gets appended. If pos_i is between -len(string_s) and +len(string_s) - 1, the insert string gets inserted into the correct place.