Добавить строку в определенную позицию в Python



есть ли функция в Python, которую я могу использовать для вставки значения в определенную позицию строки?



что-то вроде этого:



"3655879ACB6" затем в позиции 4 Добавить "-" стать "3655-879ACB6"

1106   6  

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

    Ничего не найдено.