在Python中替换字符串中的字符最简单的方法是什么?

例如:

text = "abcdefg";
text[1] = "Z";
           ^

当前回答

字符串在Python中是不可变的,这意味着你不能改变现有的字符串。 但如果你想改变其中的任何字符,你可以创建一个新的字符串,如下所示,

def replace(s, position, character):
    return s[:position] + character + s[position+1:]

replace('King', 1, 'o') // result: Kong

注意:如果你给出的位置值大于字符串的长度,它将在结尾追加字符。

replace('Dog', 10, 's') //结果:狗

其他回答

我喜欢f弦:

text = f'{text[:1]}Z{text[2:]}'

在我的机器中,这种方法比使用+来连接字符串的“快速方法”快10%:

>>> timeit.timeit("text = 'abcdefg'; text = text[:1] + 'Z' + text[2:]", number=1000000)
1.1691178000000093
>>> timeit.timeit("text = 'abcdefg'; text = f'{text[:1]}Z{text[2:]}'", number =1000000)
0.9047831999999971
>>>
new = text[:1] + 'Z' + text[2:]

实际上,对于字符串,你可以这样做:

oldStr = 'Hello World!'    
newStr = ''

for i in oldStr:  
    if 'a' < i < 'z':    
        newStr += chr(ord(i)-32)     
    else:      
        newStr += i
print(newStr)

'HELLO WORLD!'

基本上,我是“添加”+“字符串”一起成为一个新的字符串:)。

Python字符串是不可变的,你可以通过复制来改变它们。 做你想做的事情最简单的方法可能是:

text = "Z" + text[1:]

文本[1:]返回文本中从位置1到末尾的字符串,位置从0开始计数,因此'1'是第二个字符。

编辑: 您可以对字符串的任何部分使用相同的字符串切片技术

text = text[:1] + "Z" + text[2:]

或者如果字母只出现一次,你可以使用搜索和替换技巧 下面

字符串在Python中是不可变的,这意味着你不能改变现有的字符串。 但如果你想改变其中的任何字符,你可以创建一个新的字符串,如下所示,

def replace(s, position, character):
    return s[:position] + character + s[position+1:]

replace('King', 1, 'o') // result: Kong

注意:如果你给出的位置值大于字符串的长度,它将在结尾追加字符。

replace('Dog', 10, 's') //结果:狗