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

例如:

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

当前回答

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

oldStr = 'Hello World!'    
newStr = ''

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

'HELLO WORLD!'

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

其他回答

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

>>> 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
new = 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') //结果:狗

正如其他人所说,通常Python字符串应该是不可变的。

但是,如果你使用的是CPython (python.org上的实现),则可以使用ctypes来修改内存中的字符串结构。

下面是我使用该技术清除字符串的示例。

在python中将数据标记为敏感

为了完整起见,我提到了这一点,这应该是您最后的手段,因为它很粗糙。

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

oldStr = 'Hello World!'    
newStr = ''

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

'HELLO WORLD!'

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