<p>这不是小事。它可以通过字符串索引和切片来完成。但你也必须考虑到资本化的因素,并将其保留下来。在</p>
<pre><code>>>> s = "Hello"
>>> x = list(s)
>>> x
['H', 'e', 'l', 'l', 'o']
</code></pre>
<p>交换第一个与第三个和交换大小写</p>
^{pr2}$
<p>交换第二个和第四个</p>
<pre><code>>>> x[1], x[3] = x[3], x[1]
>>> x
['L', 'l', 'h', 'e', 'o']
</code></pre>
<p>把它变成一根绳子</p>
<pre><code>>>> ''.join(x)
'Llheo'
</code></pre>
<p>这并不适用于所有情况,但在这个特定的案例中,这正是您所要求的。在</p>
<p><strong>编辑:</strong>使用函数进一步:</p>
<pre><code>def swap_letters(indexes, string):
"""
@indexes should be a list of 2-tuples of indexes to swap, e.g.:
[(0,2), (1,3)]
@string is the input string.
"""
letters = list(string)
for src, dst in indexes:
letter_src = letters[src]
letter_dst = letters[dst]
# Swap case on destination letter if src is upper
if letter_src.isupper():
letter_dst = letter_dst.upper()
letter_src = letter_src.lower()
letters[src], letters[dst] = letter_dst, letter_src
return ''.join(letters)
if __name__ == '__main__':
# This is the example from the OP
indexes = [(0,2), (1,3)]
word = 'Hello'
print swap_letters(indexes, word)
# And a proof of concept
indexes = [(0,-1), (6,4)]
word = 'ActiveSync'
print swap_letters(indexes, word)
</code></pre>