在Python中是否有任何函数可以用来在字符串的特定位置插入值?

就像这样:

“3655879ACB6”,然后在位置4添加“-”,变成“3655-879ACB6”


当前回答

我认为上面的答案很好,但我想解释一下,它们有一些意想不到但很好的副作用……

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之间,则插入字符串被插入到正确的位置。

其他回答

由于字符串是不可变的,另一种方法是将字符串转换为列表,然后可以在没有任何切片技巧的情况下对其进行索引和修改。但是,要将列表还原为字符串,必须使用空字符串的.join()。

>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'

我不确定这与性能相比如何,但我确实觉得它比其他解决方案更容易看到眼睛。: -)

我认为上面的答案很好,但我想解释一下,它们有一些意想不到但很好的副作用……

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之间,则插入字符串被插入到正确的位置。

这看起来很简单:

>>> 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)

我想添加另一个简单的一行程序解决方案;)

“-”。加入([_string [4], _string [4:]]

Python 3.6+使用f-string:

mys = '1362511338314'
f"{mys[:10]}_{mys[10:]}"

给了

'1362511338_314'