Есть ли какая-нибудь функция в Python, которую я могу использовать для вставки значения в определенную позицию строки?
Что-то вроде этого:
"3655879ACB6"
, затем в позиции 4 добавьте "-"
, чтобы стать "3655-879ACB6"
Есть ли какая-нибудь функция в Python, которую я могу использовать для вставки значения в определенную позицию строки?
Что-то вроде этого:
"3655879ACB6"
, затем в позиции 4 добавьте "-"
, чтобы стать "3655-879ACB6"
Нет. Строки Python неизменяемы.
>>> s='355879ACB6'
>>> s[4:4] = '-'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Однако можно создать новую строку с введенным символом:
>>> s[:4] + '-' + s[4:]
'3558-79ACB6'
Это кажется очень простым:
>>> hash = "355879ACB6"
>>> hash = hash[:4] + '-' + hash[4:]
>>> print hash
3558-79ACB6
Однако, если вам нравится что-то вроде функции, выполните следующие действия:
def insert_dash(string, index):
return string[:index] + '-' + string[index:]
print insert_dash("355879ACB6", 5)
Поскольку строки являются неизменными, другой способ сделать это - превратить строку в список, который затем может быть проиндексирован и изменен без какой-либо обрезки. Однако, чтобы вернуть список к строке, вам нужно будет использовать .join()
, используя пустую строку.
>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'
Я не уверен, как это сравнивается с производительностью, но я чувствую, что это проще на глазах, чем другие решения.; -)
Я сделал очень полезный метод для добавления строки в определенную позицию в 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, '%'))
мы будем иметь выход:
-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!
Простая функция для этого:
def insert_str(string, str_to_insert, index):
return string[:index] + str_to_insert + string[index:]
Если вы хотите, чтобы многие вставки
from rope.base.codeanalyze import ChangeCollector
c = ChangeCollector(code)
c.add_change(5, 5, '<span style="background-color:#339999;">')
c.add_change(10, 10, '</span>')
rend_code = c.get_changed()