6 ответов:
нет. Строки в 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()
Comments