2024-05-19 15:04:29 发布
网友
在Python中,字符串是不可变的。
一个字符串一个字符地遍历并修改它的标准习惯用法是什么?
我能想到的唯一方法是一些真正的、与结果字符串连接相关的不可靠的方法。
--
在C中:
for(int i = 0; i < strlen(s); i++) { s[i] = F(s[i]); }
这是一个超级的表达能力,准确地说明了我在做什么。这就是我要找的。
您可以使用UserString模块:
>>> import UserString ... s = UserString.MutableString('Python') ... print s Python >>> s[0] = 'c' >>> print s cython
C语言的Python模拟:
将是:
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,所以您(不一定)使用字符。您使用的是字节。所以这也管用:
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。
您可以使用UserString模块:
C语言的Python模拟:
将是:
也很有表现力。它准确地描述了正在发生的事情,但使用的是功能样式,而不是程序样式。
不要使用字符串,使用诸如bytearray之类的可变值:
结果:
编辑:
因为这是一个
bytearray
,所以您(不一定)使用字符。您使用的是字节。所以这也管用:给出:
如果您想修改Unicode字符串中的字符,您可能需要使用^{} ,尽管这并不直接支持Unicode。
相关问题 更多 >
编程相关推荐