Python中的“就地”字符串修改

2024-05-19 15:04:29 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,字符串是不可变的。

一个字符串一个字符地遍历并修改它的标准习惯用法是什么?

我能想到的唯一方法是一些真正的、与结果字符串连接相关的不可靠的方法。

--

在C中:

for(int i = 0; i < strlen(s); i++)
{
   s[i] = F(s[i]);
}

这是一个超级的表达能力,准确地说明了我在做什么。这就是我要找的。


Tags: 方法字符串for标准字符int习惯用法strlen
3条回答

您可以使用UserString模块:

 >>> import UserString
... s = UserString.MutableString('Python')
... print s
Python
>>> s[0] = 'c'
>>> print s
cython

C语言的Python模拟:

for(int i = 0; i < strlen(s); i++)
{
   s[i] = F(s[i]);
}

将是:

s = "".join(F(c) for c in s)

也很有表现力。它准确地描述了正在发生的事情,但使用的是功能样式,而不是程序样式。

不要使用字符串,使用诸如bytearray之类的可变值:

#!/usr/bin/python

s = bytearray("my dog has fleas")
for n in xrange(len(s)):
    s[n] = chr(s[n]).upper()
print s

结果:

MY DOG HAS FLEAS

编辑:

因为这是一个bytearray,所以您(不一定)使用字符。您使用的是字节。所以这也管用:

s = bytearray("\x81\x82\x83")
for n in xrange(len(s)):
    s[n] = s[n] + 1
print repr(s)

给出:

bytearray(b'\x82\x83\x84')

如果您想修改Unicode字符串中的字符,您可能需要使用^{},尽管这并不直接支持Unicode。

相关问题 更多 >