2

我正在努力解决python中的一个基本问题。我需要在某个位置读取一个字符串才能修改它。

示例:对于字符串,'abcd'我想读取第 3 个位置(实际上是第 2 个,因为您从 0 开始)并将其更改为字母表的下一个字母,'abdd'. 但是,如果 string 碰巧'abrd'应该更改为'absd',等等。所以,我需要在特定位置读取和写入,并让其他所有内容保持不变;应该是世界上最简单的事情,但我找不到怎么做。

4

2 回答 2

2

您的问题的核心答案很简单:使用列表切片语法:

>>> 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,请考虑使用转换表

于 2013-04-15T00:27:12.570 回答
1

除了@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]]
于 2013-04-15T00:34:58.040 回答