在Python中替换字符串中的字符最简单的方法是什么?
例如:
text = "abcdefg";
text[1] = "Z";
^
在Python中替换字符串中的字符最简单的方法是什么?
例如:
text = "abcdefg";
text[1] = "Z";
^
当前回答
我喜欢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
>>>
其他回答
实际上,对于字符串,你可以这样做:
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 2.6和python 3开始,你可以使用可变的bytearrays(可以像字符串那样按元素改变):
s = "abcdefg"
b_s = bytearray(s)
b_s[1] = "Z"
s = str(b_s)
print s
aZcdefg
编辑:将str改为s
edit2:正如Two-Bit Alchemist在评论中提到的,这段代码不能使用unicode。
new = text[:1] + 'Z' + text[2:]
正如其他人所说,通常Python字符串应该是不可变的。
但是,如果你使用的是CPython (python.org上的实现),则可以使用ctypes来修改内存中的字符串结构。
下面是我使用该技术清除字符串的示例。
在python中将数据标记为敏感
为了完整起见,我提到了这一点,这应该是您最后的手段,因为它很粗糙。
字符串在Python中是不可变的,这意味着你不能改变现有的字符串。 但如果你想改变其中的任何字符,你可以创建一个新的字符串,如下所示,
def replace(s, position, character):
return s[:position] + character + s[position+1:]
replace('King', 1, 'o') // result: Kong
注意:如果你给出的位置值大于字符串的长度,它将在结尾追加字符。
replace('Dog', 10, 's') //结果:狗