Python中是否有任何函数可用于在字符串的某个位置插入值?
这样的事情:
"3655879ACB6"
然后在第4位添加"-"
成为"3655-879ACB6"
答案 0 :(得分:194)
没有。 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'
答案 1 :(得分:42)
这似乎很容易:
>>> 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)
答案 2 :(得分:20)
由于字符串是不可变的,另一种方法是将字符串转换为列表,然后可以在没有任何切片技巧的情况下对其进行索引和修改。但是,要将列表恢复为字符串,您必须使用空字符串.join()
。
>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'
我不确定这与性能相比如何,但我觉得它比其他解决方案更容易。 ; - )
答案 3 :(得分:2)
我做了一个非常有用的 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, '%'))
我们将作为输出:
-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!
答案 4 :(得分:2)
完成此任务的简单功能:
def insert_str(string, str_to_insert, index):
return string[:index] + str_to_insert + string[index:]
答案 5 :(得分:2)
我认为上面的答案很好,但是我会解释说,它们有一些意想不到但很好的副作用...
def insert(string_s, insert_s, pos_i=0):
return string_s[:pos_i] + insert_s + string_s[pos_i:]
如果索引pos_i非常小(太负),则将插入字符串。如果太长,则会附加插入字符串。如果pos_i在-len(string_s)和+ len(string_s)-1之间,则会将插入字符串插入正确的位置。
答案 6 :(得分:2)
使用f字符串的Python 3.6 +:
mys = '1362511338314'
f"{mys[:10]}_{mys[10:]}"
给予
'1362511338_314'
答案 7 :(得分:0)
如果你想要很多插页
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()