在Python中是否有任何函数可以用来在字符串的特定位置插入值?
就像这样:
“3655879ACB6”,然后在位置4添加“-”,变成“3655-879ACB6”
在Python中是否有任何函数可以用来在字符串的特定位置插入值?
就像这样:
“3655879ACB6”,然后在位置4添加“-”,变成“3655-879ACB6”
当前回答
如果需要在多个位置插入给定的字符,请始终考虑创建一个子字符串列表,然后使用.join()而不是+进行字符串连接。这是因为,由于Python的str是可变的,+字符串连接总是增加额外的开销。更多信息可以在这里找到。
其他回答
不。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'
由于字符串是不可变的,另一种方法是将字符串转换为列表,然后可以在没有任何切片技巧的情况下对其进行索引和修改。但是,要将列表还原为字符串,必须使用空字符串的.join()。
>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'
我不确定这与性能相比如何,但我确实觉得它比其他解决方案更容易看到眼睛。: -)
如果你想要很多插入
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()
我做了一个非常有用的方法来在Python中的特定位置添加字符串:
def insertChar(mystring, position, chartoinsert ):
mystring = mystring[:position] + chartoinsert + mystring[position:]
return mystring
例如:
a = "Jorgesys was here!"
def insertChar(mystring, position, chartoinsert ):
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!
这看起来很简单:
>>> 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)