我正在努力解决python中的一个基本问题。我需要在某个位置读取一个字符串才能修改它。
示例:对于字符串,'abcd'
我想读取第 3 个位置(实际上是第 2 个,因为您从 0 开始)并将其更改为字母表的下一个字母,'abdd'
. 但是,如果 string 碰巧'abrd'
应该更改为'absd'
,等等。所以,我需要在特定位置读取和写入,并让其他所有内容保持不变;应该是世界上最简单的事情,但我找不到怎么做。
您的问题的核心答案很简单:使用列表切片语法:
>>> string='abcd'
>>> print string[:2] + 'd' + string[3:]
abdd
如果您可以假设只增加字符串的序数值是安全的,那么您可以这样做:
>>> string='abrd'
>>> string=string[:2] + chr(ord(string[2]) + 1) + string[3:]
由于您的问题中未指定,因此我假设这就是您所需要的。如果您想从“z”循环到“a”,或者专门处理不同的字母大小写或 unicode 字符集,您可能会发现一些粗略的补丁。
如果您确实有比增加 更复杂的问题ord
,请考虑使用转换表
除了@kojiro 的回答。另一种方法是将字符串切换到列表并将其加入。例如:
S = 'abcd'
// Convert to list
L = list(S)
// Change 3rd position
L[3] = 'd'
// Join it back and print
print ''.join(L)
但是,如果您需要替换不同的字符,您可以定义一个字典映射来简化转换过程。例如:
// Define {a -> x} mapping.
M = {'c': 'd', 'r': 's'}
// Substitution
L[3] = M[L[3]]