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

例如:

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

当前回答

如果你的世界是100% ascii/utf-8(很多用例适合这个盒子):

b = bytearray(s, 'utf-8')
# process - e.g., lowercasing: 
#    b[0] = b[i+1] - 32
s = str(b, 'utf-8')

python 3.7.3

其他回答

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

text = "Z" + text[1:]

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

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

text = 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!'

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

替换字符串中的一个字符

你可以使用以下任何一种方法:

方法1

一般来说,

string = f'{string[:index]}{replacing_character}{string[index+1:]}'

Here

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

方法2

一般来说,

string = string[:index] + replacing_character + string[index+1:]

在这里,

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

我想添加另一种改变字符串中的字符的方法。

>>> text = '~~~~~~~~~~~'
>>> text = text[:1] + (text[1:].replace(text[0], '+', 1))
'~+~~~~~~~~~'

与将字符串转换为列表并替换第i个值然后再次连接相比,它有多快?

列表的方法

>>> timeit.timeit("text = '~~~~~~~~~~~'; s = list(text); s[1] = '+'; ''.join(s)", number=1000000)
0.8268570480013295

我的解决方案

>>> timeit.timeit("text = '~~~~~~~~~~~'; text=text[:1] + (text[1:].replace(text[0], '+', 1))", number=1000000)
0.588400217000526

试试这个:

old_string = "mba"
string_list = list(old_string)
string_list[2] = "e"
//Replace 3rd element

new_string = "".join(string_list)

print(new_string)